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
- Introducción
- Funciones Públicas disponibles
- Variables públicas
- Funciones incluidas en la clase (I)
- Funciones incluidas en la clase (II)
________________________________________________________________________________________________________________________
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.
Cálculo de la retención de SUSS. RG 1769
wanaddinret.Formula_SUSS(ret, retprov, retfecha, retcancelatotal, Optional campoalicuota = "", Optional campobaseimponible = "")
Cálculo de la retención de SUSS. RG 1784
wanaddinret.Formula_SUSS_RG1784(ret, retprov, retfecha, retcancelatotal, Optional campoalicuota = "", Optional campobaseimponible = "")
Cálculo de la retención de Ganancias
wanaddinret.Formula_GANANCIAS(ret, retprov, retfecha, retcancelatotal, Optional campoalicuota = "", Optional campobaseimponible = "")
Cálculo de la retención de IVA
wanaddinret.Formula_IVA(ret, retprov, retfecha, retcancelatotal, Optional campoalicuota = "", Optional campobaseimponible = "")
Cálculo de la retención de Ingresos Brutos Bs. As.
wanaddinret.Function ret_IIBB(ret, prov, retcancelatotal, Optional campoalicuota = "", Optional campobaseimponible = "")
Cálculo de la retención de CABA
wanaddinret.Function retibCABA(ret, prov, retcancelatotal, Optional campoalicuota = "", Optional campobaseimponible = "")
Funciones incluidas en la clase (II)
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
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
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
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
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
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
Sus comentarios se han enviado
Agradecemos su esfuerzo e intentaremos corregir el artículo