Retenciones. Anexo. Funciones Públicas. Calipso ERP

Modificado el Jue, 23 May a 10:06 A. M.


Introducción


El presente documento brinda información complementaria al documento principal: Retenciones. Configuración y definiciones.Calipso ERP.

Versión Word: Retenciones. Anexo. Funciones Públicas y otras. Calipso ERP



Contenido



________________________________________________________________________________________________________________________



Funciones Públicas disponibles



Datos Retención  (Función)

  • wanaddinret.DatosRet(xret)

  • Devuelve el registro completo de la retención.


Acumulado pagado: (Función)

  • wanaddinret.AcumPagado(proveedor, fecha, Optional xretencion = "")

  • proveedor= código de proveedor.  (String)

  • fecha = fecha para el cálculo del acumulado. (Date)

  • Retención= código de retención para el cálculo. Si se envía vacío, se calcula por proveedor.  (String)


Acumulado Retenido: (Función)

  • wanaddinret.AcumRetenido(retencion, proveedor, fecha)

  • Retención= código de retención.  (String)

  • Proveedor= código de proveedor.  (String)

  • Fecha = fecha para el cálculo del acumulado. (Fecha)


Próximo Número para la retención: (Función)

  • wanaddinret.AsignoPunteroReten(Retención)

  • Retención= código de retención.  (String)

  • Tener presente que hay que asignar la clase de puntero en las retenciones.


Retención definida en el proveedor

  • ret_prov(proveedor, tiporetencion)

  • Proveedor= código de proveedor. (String)

  • TipoRetencion: Código tipo de retención.  (String)



Para Retención de Ganancias


Tramos de retención

  • Devuelve los datos definidos en el objeto de tramos. (o_tramos_retencion)

  • wanaddinret.Tramos_Retencion(retencion, baseimponible) 


  • Retención= código de retención.  (String)

  • baseimponible = monto para determinar el cálculo. (Double)


  • Devuelve objeto. Attribute, 2 elementos.

  • Retención: devuelve el registro del tramo encontrado. 

  • Datos que devuelve: Desde / hasta / porcentaje / importe / importe Excedente.

  • Existe: devuelve verdadero / False: existe o no el registro de tramo.



Exenciones

  • Objeto: o_retencion_exento

  • wanaddinret.Exencion_Retencion(retencion, proveedor, fecha)


  • Retención= código de retención.  (String)

  • proveedor= código de proveedor.  (String)

  • fecha = fecha para el cálculo del acumulado. (Date)

  • Devuelve registro,

  • desde (Date)

  • hasta (Date)

  • porcentaje (Double)



Para Retención de IVA


Exento Retención


  • Objeto: o_tramosiva


  • wanaddinret.exentoiva_Retencion(retencion, proveedor, fecha)


  • Retención: Código de retención. (String)

  • Proveedor: Código de proveedor. (String)

  • Fecha: Fecha para el cálculo. (Date)


  • Devuelve registro 

  • Alícuota.

  • Aplicación.



________________________________________________________________________________________________________________________




Variables públicas


  • rettipo: Código de retención.

  • retrov:  Código de proveedor.

  • ret_neto: Importe a cancelar según la configuración de tipo de cálculo definida en la retención.

  • ret_iva: Importe de IVA.

  • rettotal: importe total sin impuestos.

  • ret_exento: Importe exento.

  • retfecha: Fecha de cálculo (Fecha de la Orden de pago).

  • retcancelatotal: importe a cancelar.

  • retcancelatotal_g:  importe a cancelar en el primer pago.

  • rettotalPP:  importe total  mas pago a cuenta ambos sin impuestos.

  • retcancelatotalPP: importe a cancelar, más pago a cuenta. 

  • retcancelatotal_gPP:  importe a cancelar con pago a cuenta en el primer pago.



_______________________________________________________________________________________________________________



Funciones incluidas en la clase (I)


Las propiedades opcionales permiten trasladar el dato de alícuota y base imponible al registro de la retención en la segunda grilla en el pago.


  1. Cálculo de la retención de SUSS. RG 1769

wanaddinret.Formula_SUSS(ret, retprov, retfecha, retcancelatotal, Optional campoalicuota = "", Optional campobaseimponible = "")


  1. Cálculo de la retención de SUSS. RG 1784

wanaddinret.Formula_SUSS_RG1784(ret, retprov, retfecha, retcancelatotal, Optional campoalicuota = "", Optional campobaseimponible = "")


  1. Cálculo de la retención de Ganancias

wanaddinret.Formula_GANANCIAS(ret, retprov, retfecha, retcancelatotal, Optional campoalicuota = "", Optional campobaseimponible = "")


  1. Cálculo de la retención de IVA

wanaddinret.Formula_IVA(ret, retprov, retfecha, retcancelatotal, Optional campoalicuota = "", Optional campobaseimponible = "")


  1. Cálculo de la retención de Ingresos Brutos Bs. As.

wanaddinret.Function ret_IIBB(ret, prov, retcancelatotal, Optional campoalicuota = "", Optional campobaseimponible = "")


  1. Cálculo de la retención de CABA

wanaddinret.Function retibCABA(ret, prov, retcancelatotal, Optional campoalicuota = "", Optional campobaseimponible = "")



Funciones incluidas en la clase (II)


  1. Function Formula_SUSS(ret, retprov, retfecha, retcancelatotal, campoalicuota , campobaseimponible) ‘ RG  1769


    Dim xtramos, xretencion,vxDatosRet, imporeten 

    Dim regimen

    Dim xBaseNoimponible

    Dim baseimponible

    Dim xretenido

    Dim xscript_alicuota As String

    Dim xporcentaje

    

    Set xDatosRet = DatosRet(CStr(ret))

    xBaseNoimponible = f.traecam("cajatipo", "BASENOIMPONIBLE", ret)

    

    imporeten = 0

    

    baseimponible = AcumPagado(retprov, retfecha, ret) + retcancelatotal - f.valnum(xBaseNoimponible)

    xretenido = AcumRetenido(ret, retprov, retfecha)

    regimen = f.traecam("proveedo", "c_ganre", CStr(ret))

    xscript_alicuota = f.traecam("cajatipo", "c_script_alicuota", ret)

        

    If xscript_alicuota <> "" Then

        xporcentaje = f.evalexpr(xscript_alicuota)

        imporeten = (baseimponible * (f.valnum(xporcentaje) / 100)) - xretenido

    Else

        If regimen = "S" Then         

            Set xtramos = Tramos_Retencion(CStr(ret), CDbl(baseimponible))

            If xtramos("existe") Then

                Set xretencion = xtramos("retencion").Value

                imporeten = imporeten + (baseimponible - xretencion("importeexcedente")) * (xretencion("porcentaje") / 100) + xretencion(-xretenido)

            Else

                 imporeten = (baseimponible * (f.valnum(xDatosRet("inscripto")) / 100)) - xretenido

            End If

        Else

                imporeten = (baseimponible * f.valnum(xDatosRet("noinscripto")) / 100) - xretenido

        End If

    End If

    

    Formula_SUSS = imporeten

        

    ' Libero.

    Set xtramos = Nothing

    Set xretencion = Nothing

    Set xDatosRet = Nothing


End Function



  1. Function Formula_SUSS_RG1784(ret, retprov, retfecha, rettotal, retcancelatotal, campoalicuota , campobaseimponible)


    Dim xDatosRet

    Dim imporeten

    Dim regimen

    

    Dim baseimponible

    

    Dim xscript_alicuota

    Dim xporcentaje

    

    Set xDatosRet = DatosRet(CStr(ret))

    

    imporeten = 0

    

    baseimponible = rettotal

    

    xscript_alicuota = xDatosRet("c_script_alicuota")

        

    If xscript_alicuota <> "" Then

      

        xporcentaje = f.evalexpr(xscript_alicuota)

          

        imporeten = (baseimponible * (f.ValNum(xporcentaje) / 100))


    Else

        regimen = f.traecam("proveedo", "ivare", CStr(retprov))

        regimen = f.traecam("ivare", "camporetSUSS", CStr(regimen))

        If CBool(regimen) Then

            xporcentaje = xDatosRet("inscripto")

            imporeten = (baseimponible * f.ValNum(xporcentaje) / 100)

        End If

    

   End If

   

   ' Evaluo si lo a retener es menor al mínimo.

   If imporeten < xDatosRet("minreten") Then imporeten = 0

   

   ' Paso datos a la grilla.

    If campoalicuota <> "" Then AddDatosAnexos ret, campoalicuota, xporcentaje

    If campobaseimponible <> "" Then AddDatosAnexos ret, campobaseimponible, baseimponible

    

    Formula_SUSS_RG1784 = imporeten

        

    ' Libero.

    Set xtramos = Nothing

    Set xretencion = Nothing

    Set xDatosRet = Nothing


End Function



  1. Function Formula_GANANCIAS(ret, retprov, retfecha, retcancelatotal, campoalicuota, campobaseimponible)


    Dim xtramos, xretencion, xDatosRet, imporeten, xexencion, regimen , xBaseNoimponible

    Dim baseimponible, xretenido

    Dim xscript_alicuota

    Dim xporcentaje

    Dim minreten

    

    Set xDatosRet = DatosRet(CStr(ret))

    

    Set xexencion = Exencion_Retencion(ret, retprov, retfecha)

    

    xBaseNoimponible = f.traecam("cajatipo", "BASENOIMPONIBLE", ret)

    imporeten = 0

    baseimponible = AcumPagado(retprov, retfecha) + retcancelatotal - f.valnum(xBaseNoimponible)

    xretenido = AcumRetenido(ret, retprov, retfecha)

    xscript_alicuota = f.traecam("cajatipo", "c_script_alicuota", ret)

    

    If xscript_alicuota <> "" Then

      

        xporcentaje = f.evalexpr(xscript_alicuota)

        imporeten = (baseimponible * (f.valnum(xporcentaje) / 100)) - xretenido


    Else

        

        regimen = f.traecam("proveedo", "c_ganre", CStr(ret))

        If regimen = "S" Then

         

            Set xtramos = Tramos_Retencion(CStr(ret), CDbl(baseimponible))

            If xtramos("existe") Then

                Set xretencion = xtramos("retencion").Value

                imporeten = imporeten + (baseimponible - xretencion("importeexcedente")) * (xretencion("porcentaje") / 100) + xretencion(-xretenido)

            

            Else

                 imporeten = (baseimponible * (f.valnum(xDatosRet("inscripto")) / 100)) - xretenido

            End If

        Else

            ' No Inscripto.

            imporeten = (baseimponible * f.valnum(xDatosRet("noinscripto")) / 100) - xretenido

                

        End If

    End If

    

    minreten = f.traecam("cajatipo", "minreten", ret)

    

    'Ver d epoder un parámetro.

    If imporeten < minreten Then imporeten = 0

    

    'Busco el porcentaje de Excepcion de la retencion, solo si tiene un importe a retener

    If imporeten <> 0 Then

       

        If Not xexencion Is Nothing Then

            imporeten = imporeten * (1 - (f.valnum(xexencion("porcentaje")) / 100))

        End If

       

    End If

                    

    Formula_GANANCIAS = imporeten

    

    ' Libero.

    Set xtramos = Nothing

    Set xretencion = Nothing

    Set xDatosRet = Nothing


End Function



  1. Function Formula_IVA(ret, retprov, retfecha, retcancelatotal, campoalicuota , campobaseimponible)


    Dim xPorcentajeExento

    Dim xporExenIVA

    Dim imporeten

    

    Dim xporcentaje

    Dim xscript_alicuota 


    Dim xacumula

    Dim xprocentaje

    

    Dim rregimen  

    Dim rExento  

    

    xporcentaje = 0


      ' riva trae los comprobantes pagados en la grilla

      xacumula = 0

      'Cargo las distintas alicuotas

      

      xporExenIVA = f.traecam("proveedor", "c_exen_iva", retprov)

      

      Set rregimen = tramosiva_Retencion(ret)

      

      If Not rregimen Is Nothing Then xporcentaje = rregimen("Alicuota")

      

      ' Si el porcentaje es cero busca en el script alicuota.

      If xporcentaje = 0 Then

      

         xscript_alicuota = f.traecam("cajatipo", "c_script_alicuota", ret)

        

         If xscript_alicuota <> "" Then

          

              xprocentaje = f.evalexpr(xscript_alicuota)

        

         End If

      

       ' Si el porcentaje busco las alicuotas en cajatipo.

       If xporcentaje = 0 Then

      

         ' Evaluo si es incripto

         xporcentaje = f.evalexpr(xscript_alicuota)

         

       End If

      

      End If


    Set rExento = exentoiva_Retencion(ret, retprov, retfecha)

      If Not rExento Is Nothing Then

      

          xPorcentajeExento = f.valnum(rExento("porcentaje"))

          

      Else

          'Le saco el porcentaje de excepcion de la ficha del Prov, porque antes no existia el objeto

          xPorcentajeExento = xporExenIVA

          

      End If


      imporeten = (retcancelatotal * f.valnum(xporcentaje) / 100) * ((100 - xPorcentajeExento) / 100)

      

      Set rregimen = Nothing

      Set xacumula = Nothing

      

End Function



  1. Function ret_IIBB(ret, prov, retcancelatotal, campoalicuota , campobaseimponible)


   ' Función que cálcula la retención de ingresos brutos.

    Dim imporeten, xPorcentajeExento, xpor, xcod, xcomp, baseimponible

    Dim xTotPago, imporetenComp

    Dim xgrid, rmonto, xitem, rsc

    Dim xneto, xtotneto

    Dim xvalortipo

    Dim importecomptotal

    Dim xstr, xstr1

    Dim xCuitProv


    Dim BaseNoimponible, minreten, inscripto


    Set xstr = f.newcstring()

    Set xstr1 = f.newcstring()


    imporeten = 0

    xPorcentajeExento = 0

    importecomptotal = 0

    xpor = 0

    xtotneto = 0

    xvalortipo = ret


    ' Traigo el porcentaje de la tasa del impuesto.

   

    xpor = wanaddinimpuestos.alicuotaProveedor(campo("prov"), (175/100)) 

  

    ' Pongo en cero la base imponible.

    baseimponible = 0

    imporetenComp = 0


    imporetenComp = (retcancelatotal * (xpor / 100))

    'imporetenComp = imporetenComp * (1 - (xPorcentajeExento / 100))

    

    ' Esto va en el filtro,  en el filtro por la retención.

    ' If xtotneto >= 400 Then importecomptotal = imporetenComp

    'if xtotneto >= 400 then importecomptotal = importecomptotal


    minreten = f.traecam("cajatipo", "minreten", ret)


    If imporetenComp >= minreten Then

        ' Acumulo el importe.

        imporeten = importecomptotal

    Else

        imporeten = 0

    End If


    'Entrego el valor.

    ret_IIBB = imporeten



End Function



  1. Function retibCABA(ret, prov, retcancelatotal, campoalicuota , campobaseimponible)


   ' Función que calcula la retención de ingresos brutos.

    Dim imporeten, xPorcentajeExento, xpor, xcod, xcomp, baseimponible

    Dim xTotPago, imporetenComp

    Dim xgrid, rmonto, xitem, rsc

    Dim xneto, xtotneto

    Dim xvalortipo

    Dim importecomptotal

    Dim xstr, xstr1

    Dim xCuitProv


    Dim BaseNoimponible, minreten, inscripto


    Set xstr = f.newcstring()

    Set xstr1 = f.newcstring()


    imporeten = 0

    xPorcentajeExento = 0

    importecomptotal = 0

    xpor = 0

    xtotneto = 0

    xvalortipo = ret


    ' Traigo el porcentaje de la tasa del impuesto.


'    xpor = wanaddinimpuestos.alicuotaProveedor(campo("prov"), (175/100)) 

  

    ' Pongo en cero la base imponible.

    baseimponible = 0

    imporetenComp = 0


    imporetenComp = (retcancelatotal * (xpor / 100))

    'imporetenComp = imporetenComp * (1 - (xPorcentajeExento / 100))

    

    ' Esto va en el filtro,  en el filtro por la retención.

    ' If xtotneto >= 400 Then importecomptotal = imporetenComp

    'if xtotneto >= 400 then importecomptotal = importecomptotal

    minreten = f.traecam("cajatipo", "minreten", ret)


    If imporetenComp >= minreten Then

        ' Acumulo el importe.

        imporeten = importecomptotal

        'retencionActual("c_baseimponible") = baseimponible

        'retencionActual("C_ALICUOTA_CABA") = xpor

    Else

        imporeten = 0

    End If

    'Entrego el valor.

    retibCABA = imporeten

   

End Function







¿Le ha sido útil este artículo?

¡Qué bien!

Gracias por sus comentarios

¡Sentimos mucho no haber sido de ayuda!

Gracias por sus comentarios

¡Háganos saber cómo podemos mejorar este artículo!

Seleccione al menos una de las razones
Se requiere la verificación del CAPTCHA.

Sus comentarios se han enviado

Agradecemos su esfuerzo e intentaremos corregir el artículo