Histórico da Página
ÍNDICE Índice
01. VISIÓN GENERAL
Se requiere ejecutar la rutina Totvs Recibos (FINA998) a traves del Modelo de recibos (FINA887) como rutina automática.
02. PROCESO DE IMPLEMENTACIÓN
Para la ejecución de la rutina Totvs Recibo(FINA998) de forma automatica, es necesario utilizar el modelo definido para recibos(FINA887).
...
Totvs custom tabs box | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||
|
03. EJEMPLO DE UTILIZACIÓN
A continuación se muestran alguno ejemplos para ejecutar las operaciones de INSERT, DELETE y UPDATE del modelo.
...
Contiene los campos de la tabla SE1
Ejemplos:
Registro de recibo
Bloco de código | ||||
---|---|---|---|---|
| ||||
#INCLUDE "PROTHEUS.CH" #INCLUDE "FWMVCDEF.CH" #INCLUDE "FWEVENTVIEWCONSTS.CH" #INCLUDE 'FINA887.CH' Function F887FINAUTO() Local oMdlTab Local cMsj := "Recibo registrado con exito." Local cRecibo := "AUTRE2" Local cSerie := " " Local cCliente := "CSERVI" SetFunName("FINA887") // Se define el modelo FINA887 oMdlTab := FwLoadModel("FINA887") // Se define la operación INSERT en el modelo oMdlTab:SetOperation(MODEL_OPERATION_INSERT) // Se activa el modelo oMdlTab:Activate() //Encabezado de recibo - FJT oMdlTab:SetValue('FJT_MASTER', "FJT_FILIAL" , xFilial("FJT")) oMdlTab:SetValue('FJT_MASTER', "FJT_DTDIGI" , dDataBase ) oMdlTab:SetValue('FJT_MASTER', "FJT_RECIBO" , cRecibo ) oMdlTab:SetValue('FJT_MASTER', "FJT_SERIE" , cSerie) oMdlTab:SetValue('FJT_MASTER', "FJT_EMISSA" , dDataBase) oMdlTab:SetValue('FJT_MASTER', "FJT_NATURE" , "COBRO ") oMdlTab:SetValue('FJT_MASTER', "FJT_CLIENT" , cCliente ) oMdlTab:SetValue('FJT_MASTER', "FJT_LOJA" , "01") oMdlTab:SetValue('FJT_MASTER', "FJT_COBRAD" , "") oMdlTab:SetValue('FJT_MASTER', "FJT_RECPRV" ,"") oMdlTab:SetValue('FJT_MASTER', "GERANCC" , "") oMdlTab:SetValue('FJT_MASTER', "DOCUMEN" , "RA") // Se activa el grupo de preguntas FIN988 para usar los valores de la tabla de preguntas SX1. Pergunte("FIN998",.F.) oMdlTab:SetValue('FJT_MASTER', "ASIENTO" , MV_PAR01) // ¿Muestra Asientos ? oMdlTab:SetValue('FJT_MASTER', "AGRUPA" , MV_PAR02) // ¿Agrupa Asientos ? oMdlTab:SetValue('FJT_MASTER', "ONLINE" , MV_PAR03) //¿Asientos Online ? //Monedas oMdlTab:SetValue('MOE_DETAIL',"MOEDA" , "1") oMdlTab:SetValue('MOE_DETAIL',"TASA" , 1) oMdlTab:SetValue('MOE_DETAIL',"RECIBIDO" , 2820) // Monto total que suman las formas de pago. oMdlTab:SetValue('MOE_DETAIL',"SALDO" , 0 ) // Saldo que queda por cobrar entre los titulos x cobrar y las formas de pago. oMdlTab:GetModel('MOE_DETAIL' ):AddLine() oMdlTab:SetValue('MOE_DETAIL',"MOEDA" , "2") oMdlTab:SetValue('MOE_DETAIL',"TASA" , 0) oMdlTab:SetValue('MOE_DETAIL',"RECIBIDO" , 0) oMdlTab:SetValue('MOE_DETAIL',"SALDO" , 0 ) // Agregar las formas de pago - Campos de tabla SEL oMdlTab:SetValue('SEL_DETAIL',"EL_CLIENTE" , cCliente ) oMdlTab:SetValue('SEL_DETAIL',"EL_NATUREZ" , "COBRO ") oMdlTab:SetValue('SEL_DETAIL',"EL_LOJA" , "01") oMdlTab:SetValue('SEL_DETAIL',"EL_DTDIGIT" , dDataBase) oMdlTab:SetValue('SEL_DETAIL',"EL_TIPO" , "TF") oMdlTab:SetValue('SEL_DETAIL',"EL_FILIAL" , xFilial("SEL")) oMdlTab:SetValue('SEL_DETAIL',"EL_TIPODOC" , "TF") oMdlTab:SetValue('SEL_DETAIL',"EL_MOEDA" , "1") oMdlTab:SetValue('SEL_DETAIL',"EL_EMISSAO" ,dDataBase) oMdlTab:SetValue('SEL_DETAIL',"EL_DTVCTO" ,dDataBase) oMdlTab:SetValue('SEL_DETAIL',"EL_TPCRED" ,"1") oMdlTab:SetValue('SEL_DETAIL',"EL_ACREBAN" ,"1") oMdlTab:SetValue('SEL_DETAIL',"EL_TERCEIR" ,"1") oMdlTab:SetValue('SEL_DETAIL',"EL_ENDOSSA" ,"2") oMdlTab:SetValue('SEL_DETAIL',"EL_TRANSIT" ,"2") oMdlTab:SetValue('SEL_DETAIL',"EL_VERSAO" ,"00") oMdlTab:SetValue('SEL_DETAIL',"EL_SELDOC" ,"2") oMdlTab:SetValue('SEL_DETAIL',"EL_FORPGO" ,"03") oMdlTab:SetValue('SEL_DETAIL',"EL_HRPAGO" ,"12:00:00") oMdlTab:SetValue('SEL_DETAIL',"EL_HORA" ,"11:00:13") oMdlTab:SetValue('SEL_DETAIL',"EL_PREFIXO" ,"TF") oMdlTab:SetValue('SEL_DETAIL',"EL_NUMERO" ,"TFAU-0000") oMdlTab:SetValue('SEL_DETAIL',"EL_VALOR" ,820) oMdlTab:SetValue('SEL_DETAIL',"EL_BANCO" ,"CX1") oMdlTab:SetValue('SEL_DETAIL',"EL_AGENCIA" ,"00001") oMdlTab:SetValue('SEL_DETAIL',"EL_CONTA" ,"0000000001") //Para agregar una nueva linea al grid de las formas de pago oMdlTab:GetModel('SEL_DETAIL' ):AddLine() oMdlTab:SetValue('SEL_DETAIL',"EL_CLIENTE" , cCliente ) oMdlTab:SetValue('SEL_DETAIL',"EL_NATUREZ" , "COBRO ") oMdlTab:SetValue('SEL_DETAIL',"EL_LOJA" , "01") oMdlTab:SetValue('SEL_DETAIL',"EL_DTDIGIT" , dDataBase) oMdlTab:SetValue('SEL_DETAIL',"EL_TIPO" , "EF") oMdlTab:SetValue('SEL_DETAIL',"EL_FILIAL" , xFilial("SEL")) oMdlTab:SetValue('SEL_DETAIL',"EL_TIPODOC" , "EF") oMdlTab:SetValue('SEL_DETAIL',"EL_MOEDA" , "1") oMdlTab:SetValue('SEL_DETAIL',"EL_EMISSAO" ,dDataBase) oMdlTab:SetValue('SEL_DETAIL',"EL_DTVCTO" ,dDataBase) oMdlTab:SetValue('SEL_DETAIL',"EL_TPCRED" ,"1") oMdlTab:SetValue('SEL_DETAIL',"EL_ACREBAN" ,"1") oMdlTab:SetValue('SEL_DETAIL',"EL_TERCEIR" ,"1") oMdlTab:SetValue('SEL_DETAIL',"EL_ENDOSSA" ,"2") oMdlTab:SetValue('SEL_DETAIL',"EL_TRANSIT" ,"2") oMdlTab:SetValue('SEL_DETAIL',"EL_VERSAO" ,"00") oMdlTab:SetValue('SEL_DETAIL',"EL_SELDOC" ,"2") oMdlTab:SetValue('SEL_DETAIL',"EL_FORPGO" ,"01") oMdlTab:SetValue('SEL_DETAIL',"EL_HRPAGO" ,"12:00:00") oMdlTab:SetValue('SEL_DETAIL',"EL_HORA" ,"11:00:13") oMdlTab:SetValue('SEL_DETAIL',"EL_PREFIXO" ,"EF") oMdlTab:SetValue('SEL_DETAIL',"EL_NUMERO" ,"EFAUT-0009") oMdlTab:SetValue('SEL_DETAIL',"EL_VALOR" ,2000) oMdlTab:SetValue('SEL_DETAIL',"EL_BANCO" ,"") oMdlTab:SetValue('SEL_DETAIL',"EL_AGENCIA" ,"") oMdlTab:SetValue('SEL_DETAIL',"EL_CONTA" ,"") //Detalle de los titulos x cobrar - Tabla SE1 oMdlTab:SetValue('SE1_DETAIL',"E1_FILIAL" , xFilial("SE1")) oMdlTab:SetValue('SE1_DETAIL',"E1_PREFIXO" , "A" ) oMdlTab:SetValue('SE1_DETAIL',"E1_NUM" ,"00000000000000000188" ) oMdlTab:SetValue('SE1_DETAIL',"E1_PARCELA" , "A") oMdlTab:SetValue('SE1_DETAIL',"E1_TIPO" , "NF") oMdlTab:SetValue('SE1_DETAIL',"E1_CLIENTE" , "CSERVI") oMdlTab:SetValue('SE1_DETAIL',"E1_LOJA" , "01") oMdlTab:SetValue('SE1_DETAIL',"E1_DESCONT" , 0) oMdlTab:SetValue('SE1_DETAIL',"E1_MULTA" , 0) oMdlTab:SetValue('SE1_DETAIL',"E1_JUROS" , 0) oMdlTab:SetValue('SE1_DETAIL',"E1_SALDO" , 2320) oMdlTab:SetValue('SE1_DETAIL',"BAIXAR" , 2320) oMdlTab:SetValue('SE1_DETAIL',"RECNO" , 239) oMdlTab:SetValue('SE1_DETAIL',"E1_MOTIVO" , "NOR") //Para agregar una nueva linea al grid de titulos x cobrar oMdlTab:GetModel('SE1_DETAIL' ):AddLine() oMdlTab:SetValue('SE1_DETAIL',"E1_FILIAL" , xFilial("SE1")) oMdlTab:SetValue('SE1_DETAIL',"E1_PREFIXO" , "A" ) oMdlTab:SetValue('SE1_DETAIL',"E1_NUM" ,"00000000000000000189" ) oMdlTab:SetValue('SE1_DETAIL',"E1_PARCELA" , "A") oMdlTab:SetValue('SE1_DETAIL',"E1_TIPO" , "NF") oMdlTab:SetValue('SE1_DETAIL',"E1_CLIENTE" , "CSERVI") oMdlTab:SetValue('SE1_DETAIL',"E1_LOJA" , "01") oMdlTab:SetValue('SE1_DETAIL',"E1_DESCONT" , 0) oMdlTab:SetValue('SE1_DETAIL',"E1_MULTA" , 0) oMdlTab:SetValue('SE1_DETAIL',"E1_JUROS" , 0) oMdlTab:SetValue('SE1_DETAIL',"E1_SALDO" , 1160) oMdlTab:SetValue('SE1_DETAIL',"BAIXAR" , 500) oMdlTab:SetValue('SE1_DETAIL',"RECNO" , 240) oMdlTab:SetValue('SE1_DETAIL',"E1_MOTIVO" , "NOR") oMdlTab:SetValue('FAC_DETAIL','FACTOR',"2") // Factoraje financiero, 1 - Indica que es una operación de factoraje | 2 - No es operación de factoraje oMdlTab:SetValue('GEN_DETAIL',"HOURSAVERECEIPT" , "09:00:13" ) // Hora de guardado del recibo. //Se ejecuta el commit If oMdlTab:VldData() // Se detonan las validaciones del modelo // Si pasa las validaciones, se ejecutara el CommitData del modelo para guardar los datos. oMdlTab:CommitData() Endif // En caso de usar número consecutivos en el recibo If !Empty(GetSx3Cache("EL_RECIBO","X3_RELACAO")) If Alltrim(cRecibo) <> Alltrim(InitPad(GetSX3Cache("EL_RECIBO","X3_RELACAO"))) RollBackSX8() EndIf EndIf // Se obtienen los errores del modelo aError := oMdlTab:GetErrorMessage() If alltrim(aError[7]) <> "" cMsj := aError[7] Endif CONOUT("Mensaje de proceso: "+cMsj) oMdlTab:DeActivate() Return |
Borrado de recibo
Bloco de código | ||||
---|---|---|---|---|
| ||||
#INCLUDE "PROTHEUS.CH" #INCLUDE "FWMVCDEF.CH" #INCLUDE "FWEVENTVIEWCONSTS.CH" #INCLUDE 'FINA887.CH' Function F887FINAUTO() Local oMdlTab Local cMsj := "Recibo borrado con exito." Pergunte("FIN088",.F.) SetMVValue("FIN088","MV_PAR04", 2) //Mostra asientos contables - 1 = Si / 2 = No SetMVValue("FIN088","MV_PAR05", 2) //Agrupa asientos contables - 1 = Si / 2 = No oMdlTab := FwLoadModel("FINA887") DbSelectArea("FJT") FJT->(DbSetOrder(2)) If FJT->(MsSeek(xFilial("FJT")+"AUTRE2",.T.)) oMdlTab:SetOperation(MODEL_OPERATION_DELETE) oMdlTab:Activate() If oMdlTab:VldData() oMdlTab:CommitData() Endif EndIf aError := oMdlTab:GetErrorMessage() If alltrim(aError[7]) <> "" cMsj := aError[7] Endif CONOUT("Mensaje de proceso: "+cMsj) oMdlTab:DeActivate() Return |
Anulación de recibo
Bloco de código | ||||
---|---|---|---|---|
| ||||
#INCLUDE "PROTHEUS.CH" #INCLUDE "FWMVCDEF.CH" #INCLUDE "FWEVENTVIEWCONSTS.CH" #INCLUDE 'FINA887.CH' Function F887FINAUTO() Local oMdlTab Local cMsj := "Recibo borrado con exito." Local cSerie := " " Local cRecibo := "COMP03" oMdlTab := FwLoadModel("FINA887") If FJT->(MsSeek(xFilial("FJT")+cSerie+cRecibo,.T.)) oMdlTab:SetOperation(MODEL_OPERATION_UPDATE) oMdlTab:Activate() Pergunte("FIN998",.F.) oMdlTab:SetValue('FJT_MASTER', "ASIENTO" , MV_PAR01) // ¿Muestra Asientos ? oMdlTab:SetValue('FJT_MASTER', "AGRUPA" , MV_PAR02) // ¿Agrupa Asientos ? oMdlTab:SetValue('FJT_MASTER', "ONLINE" , MV_PAR03) //¿Asientos Online ? oMdlTab:SetValue('FJT_MASTER', "FJT_CANCEL" , "1") // Motivo de cancelación - Solo aplica para México oMdlTab:SetValue('SEL_DETAIL',"EL_TIPAGRO" ,"02") If oMdlTab:VldData() oMdlTab:CommitData() Endif aError := oMdlTab:GetErrorMessage() If alltrim(aError[7]) <> "" cMsj := aError[7] Endif CONOUT("Mensaje de proceso: "+cMsj) //Solución: oMdlTab:DeActivate() Endif Return |
Generación de Anticipos
Para la generacipon de un pago anticipado(RA), es necesario informar las siguientes propiedades:
...
Bloco de código | ||||
---|---|---|---|---|
| ||||
#INCLUDE "PROTHEUS.CH" #INCLUDE "FWMVCDEF.CH" #INCLUDE "FWEVENTVIEWCONSTS.CH" #INCLUDE 'FINA887.CH' Function F887FINAUTO() Local oMdlTab Local cCRLF := (chr(10)+chr(13)) Local cMsj := "Recibo registrado con exito." + cCRLF Local cRecibo := "RARC01" Local cSerie := " " Local cCliente := "CSERVI" SetFunName("FINA887") oMdlTab := FwLoadModel("FINA887") oMdlTab:SetOperation(MODEL_OPERATION_INSERT) oMdlTab:Activate() //Encabezado - FJT oMdlTab:SetValue('FJT_MASTER', "FJT_FILIAL" , xFilial("FJT")) // FILIAL oMdlTab:SetValue('FJT_MASTER', "FJT_DTDIGI" , dDataBase ) oMdlTab:SetValue('FJT_MASTER', "FJT_RECIBO" , cRecibo) oMdlTab:SetValue('FJT_MASTER', "FJT_SERIE" , cSerie) oMdlTab:SetValue('FJT_MASTER', "FJT_EMISSA" , dDataBase) oMdlTab:SetValue('FJT_MASTER', "FJT_NATURE" , "COBRO ") oMdlTab:SetValue('FJT_MASTER', "FJT_CLIENT" , cCliente) oMdlTab:SetValue('FJT_MASTER', "FJT_LOJA" , "01") oMdlTab:SetValue('FJT_MASTER', "FJT_COBRAD" , "") oMdlTab:SetValue('FJT_MASTER', "FJT_RECPRV" ,"") oMdlTab:SetValue('FJT_MASTER', "GERANCC" , "S") // Para generación de RA, S - Genera RA | N o vacio - No genera RA oMdlTab:SetValue('FJT_MASTER', "DOCUMEN" , "RA") Pergunte("FIN998",.F.) oMdlTab:SetValue('FJT_MASTER', "ASIENTO" , MV_PAR01) // ¿Muestra Asientos ? oMdlTab:SetValue('FJT_MASTER', "AGRUPA" , MV_PAR02) // ¿Agrupa Asientos ? oMdlTab:SetValue('FJT_MASTER', "ONLINE" , MV_PAR03) //¿Asientos Online ? //Monedas oMdlTab:SetValue('MOE_DETAIL',"MOEDA" , "1") oMdlTab:SetValue('MOE_DETAIL',"TASA" , 1) oMdlTab:SetValue('MOE_DETAIL',"RECIBIDO" , 1000) oMdlTab:SetValue('MOE_DETAIL',"SALDO" , 1000 ) oMdlTab:GetModel('MOE_DETAIL' ):AddLine() oMdlTab:SetValue('MOE_DETAIL',"MOEDA" , "2") oMdlTab:SetValue('MOE_DETAIL',"TASA" , 0) oMdlTab:SetValue('MOE_DETAIL',"RECIBIDO" , 0) oMdlTab:SetValue('MOE_DETAIL',"SALDO" , 0 ) // Agregar la forma de pago oMdlTab:SetValue('SEL_DETAIL',"EL_CLIENTE" , cCliente ) oMdlTab:SetValue('SEL_DETAIL',"EL_NATUREZ" , "COBRO ") oMdlTab:SetValue('SEL_DETAIL',"EL_LOJA" , "01") oMdlTab:SetValue('SEL_DETAIL',"EL_DTDIGIT" , dDataBase) oMdlTab:SetValue('SEL_DETAIL',"EL_TIPO" , "TF") oMdlTab:SetValue('SEL_DETAIL',"EL_FILIAL" , xFilial("SEL")) oMdlTab:SetValue('SEL_DETAIL',"EL_TIPODOC" , "TF") oMdlTab:SetValue('SEL_DETAIL',"EL_MOEDA" , "1") oMdlTab:SetValue('SEL_DETAIL',"EL_EMISSAO" ,dDataBase) oMdlTab:SetValue('SEL_DETAIL',"EL_DTVCTO" ,dDataBase) oMdlTab:SetValue('SEL_DETAIL',"EL_TPCRED" ,"1") oMdlTab:SetValue('SEL_DETAIL',"EL_ACREBAN" ,"1") oMdlTab:SetValue('SEL_DETAIL',"EL_TERCEIR" ,"1") oMdlTab:SetValue('SEL_DETAIL',"EL_ENDOSSA" ,"2") oMdlTab:SetValue('SEL_DETAIL',"EL_TRANSIT" ,"2") oMdlTab:SetValue('SEL_DETAIL',"EL_VERSAO" ,"00") oMdlTab:SetValue('SEL_DETAIL',"EL_SELDOC" ,"2") oMdlTab:SetValue('SEL_DETAIL',"EL_FORPGO" ,"03") oMdlTab:SetValue('SEL_DETAIL',"EL_HRPAGO" ,"12:30:00") oMdlTab:SetValue('SEL_DETAIL',"EL_HORA" ,"12:30:00") oMdlTab:SetValue('SEL_DETAIL',"EL_PREFIXO" ,"TF") oMdlTab:SetValue('SEL_DETAIL',"EL_NUMERO" ,"RA00002-0000") oMdlTab:SetValue('SEL_DETAIL',"EL_VALOR" ,1000) oMdlTab:SetValue('SEL_DETAIL',"EL_BANCO" ,"CX1") oMdlTab:SetValue('SEL_DETAIL',"EL_AGENCIA" ,"00001") oMdlTab:SetValue('SEL_DETAIL',"EL_CONTA" ,"0000000001") //Operación de factoraje oMdlTab:SetValue('FAC_DETAIL','FACTOR',"2") oMdlTab:SetValue('GEN_DETAIL',"HOURSAVERECEIPT" , "12:30:00" ) //Se ejecuta el commit If oMdlTab:VldData() oMdlTab:CommitData() Endif aError := oMdlTab:GetErrorMessage() If alltrim(aError[7]) <> "" cMsj := aError[7] Endif CONOUT("Mensaje de proceso: "+cMsj) oMdlTab:DeActivate() Return |
Procesos especificos para México
Factoraje Financiero
Para realizar una operación de factoraje es importante informar las siguientes propiedades en el modelo:
...
Bloco de código | ||||
---|---|---|---|---|
| ||||
//Operación de factoraje oMdlTab:SetValue('SEL_DETAIL','EL_FACTOR' , "1") // Informar 1 para indicar que es operación de factoraje oMdlTab:SetValue('FAC_DETAIL','FACTOR',"1") // Informar 1 para indicar que es operación de factoraje oMdlTab:SetValue('FAC_DETAIL','VALUE',1500) // Valor correspondiente a la compensación realizada desde rutina Compensación entre carteras. oMdlTab:SetValue('COM_DETAIL','RECNO',478) // Número de registro en la tabla Movimientos Bancarios. |
Timbrado de recibo de cobro
El timbrado de un recibo de cobro se realiza por medio de la rutina CFDI Complemento de recepción de pagos(FISA815). Se puede realizar despues del guardado de un recibo o con un recibo ya previamente registrado.
...
Bloco de código | ||||
---|---|---|---|---|
| ||||
#INCLUDE "PROTHEUS.CH" #INCLUDE "FWMVCDEF.CH" #INCLUDE "FWEVENTVIEWCONSTS.CH" #INCLUDE 'FINA887.CH' Function F887FINAUTO() Local cCRLF := (chr(10)+chr(13)) // Salto de linea Local cMsj := "Recibo registrado con exito." + cCRLF Local cRecibo := "CFGIAU" Local cSerie := " " Local cCliente := "CSERVI" Local jData := JsonObject():New() // Objeto Json que contiene la información del recibo a timbrar y algunas configuraciones. Local aResTmp := {} // Arreglo para guardar los errores del timbrado Local nY := 0 jData['origin'] := "FINA998" jData['imppdf'] := .F. jData['sendemail'] := .F. jData['email'] := "" jData['emailcc'] := "" jData['serie'] := cSerie jData['recibo'] := cRecibo jData['cliente'] := cCliente jData['filial'] := xFilial("SEL") jData['client'] := cCliente // Se validan los titulos que contiene el recibo de cobro. If validTitles(jData) //Timbrado de recibo de cobro FISA815(cRecibo, cSerie,,,@aResTmp,jData) // Ciclo para concatenar la respuesta del timbrado. For nY := 1 To Len(aResTmp) cMsj += aResTmp[nY][3] + cCRLF Next nY Endif CONOUT("Mensaje de proceso: "+cMsj) oMdlTab:DeActivate() Return |
Recibo con recibo sustituto
Para generar un recibo que contiene un recibo de cobro relacionado, previamente anulado con motivo 01 - Comprobante emitido con errores con relación se deben informar las siguientes propiedades:
Bloco de código | ||||
---|---|---|---|---|
| ||||
//Agregar recibo sustituto oMdlTab:SetValue('SEL_DETAIL',"EL_SERSUS" , cSerieS ) oMdlTab:SetValue('SEL_DETAIL',"EL_RECSUS" , cReciboS ) |
Recibo de cobro de tipo compensación
Para generar un recibo de cobro de tipo Compensación se deben informar las siguientes propiedades en el modelo:
...
Bloco de código | ||||
---|---|---|---|---|
| ||||
#INCLUDE "PROTHEUS.CH" #INCLUDE "FWMVCDEF.CH" #INCLUDE "FWEVENTVIEWCONSTS.CH" #INCLUDE 'FINA887.CH' Function F887FINAUTO() Local oMdlTab Local cCRLF := (chr(10)+chr(13)) Local cMsj := "Recibo registrado con exito." + cCRLF Local cRecibo := "COMP09" Local cSerie := " " Local cReciboS := "" Local cSerieS := " " Local cMotC := "" Local cCliente := "CSERVI" Local jData := JsonObject():New() Local aResTmp := {} Local nY := 0 SetFunName("FINA887") oMdlTab := FwLoadModel("FINA887") oMdlTab:SetOperation(MODEL_OPERATION_INSERT) oMdlTab:Activate() //Encabezado - FJT oMdlTab:SetValue('FJT_MASTER', "FJT_FILIAL" , xFilial("FJT")) // FILIAL oMdlTab:SetValue('FJT_MASTER', "FJT_DTDIGI" , dDataBase ) oMdlTab:SetValue('FJT_MASTER', "FJT_RECIBO" , cRecibo) oMdlTab:SetValue('FJT_MASTER', "FJT_SERIE" , cSerie) oMdlTab:SetValue('FJT_MASTER', "FJT_EMISSA" , dDataBase) oMdlTab:SetValue('FJT_MASTER', "FJT_NATURE" , "COBRO ") oMdlTab:SetValue('FJT_MASTER', "FJT_CLIENT" , cCliente) oMdlTab:SetValue('FJT_MASTER', "FJT_LOJA" , "01") oMdlTab:SetValue('FJT_MASTER', "FJT_COBRAD" , "") oMdlTab:SetValue('FJT_MASTER', "FJT_RECPRV" ,"") oMdlTab:SetValue('FJT_MASTER', "GERANCC" , "") oMdlTab:SetValue('FJT_MASTER', "DOCUMEN" , "RA") Pergunte("FIN998",.F.) oMdlTab:SetValue('FJT_MASTER', "ASIENTO" , MV_PAR01) // ¿Muestra Asientos ? oMdlTab:SetValue('FJT_MASTER', "AGRUPA" , MV_PAR02) // ¿Agrupa Asientos ? oMdlTab:SetValue('FJT_MASTER', "ONLINE" , MV_PAR03) //¿Asientos Online ? //Monedas oMdlTab:SetValue('MOE_DETAIL',"MOEDA" , "1") oMdlTab:SetValue('MOE_DETAIL',"TASA" , 1) oMdlTab:SetValue('MOE_DETAIL',"RECIBIDO" , 500 ) oMdlTab:SetValue('MOE_DETAIL',"SALDO" , 0 ) oMdlTab:GetModel('MOE_DETAIL' ):AddLine() oMdlTab:SetValue('MOE_DETAIL',"MOEDA" , "2") oMdlTab:SetValue('MOE_DETAIL',"TASA" , 0) oMdlTab:SetValue('MOE_DETAIL',"RECIBIDO" , 0) oMdlTab:SetValue('MOE_DETAIL',"SALDO" , 0 ) //Agregar forma de pago tipo CO oMdlTab:SetValue('SEL_DETAIL',"EL_CLIENTE" , cCliente ) oMdlTab:SetValue('SEL_DETAIL',"EL_NATUREZ" , "COBRO ") oMdlTab:SetValue('SEL_DETAIL',"EL_LOJA" , "01") oMdlTab:SetValue('SEL_DETAIL',"EL_DTDIGIT" , dDataBase) oMdlTab:SetValue('SEL_DETAIL',"EL_TIPO" , "CO") oMdlTab:SetValue('SEL_DETAIL',"EL_FILIAL" , xFilial("SEL")) oMdlTab:SetValue('SEL_DETAIL',"EL_TIPODOC" , "CO") oMdlTab:SetValue('SEL_DETAIL',"EL_MOEDA" , "1") oMdlTab:SetValue('SEL_DETAIL',"EL_EMISSAO" ,dDataBase) oMdlTab:SetValue('SEL_DETAIL',"EL_DTVCTO" ,dDataBase) oMdlTab:SetValue('SEL_DETAIL',"EL_TPCRED" ,"3") oMdlTab:SetValue('SEL_DETAIL',"EL_ACREBAN" ,"1") oMdlTab:SetValue('SEL_DETAIL',"EL_TERCEIR" ,"1") oMdlTab:SetValue('SEL_DETAIL',"EL_ENDOSSA" ,"2") oMdlTab:SetValue('SEL_DETAIL',"EL_TRANSIT" ,"2") oMdlTab:SetValue('SEL_DETAIL',"EL_VERSAO" ,"00") oMdlTab:SetValue('SEL_DETAIL',"EL_SELDOC" ,"2") oMdlTab:SetValue('SEL_DETAIL',"EL_HRPAGO" ,"12:00:00") oMdlTab:SetValue('SEL_DETAIL',"EL_HORA" ,"12:00:13") oMdlTab:SetValue('SEL_DETAIL',"EL_PREFIXO" ,"CO") oMdlTab:SetValue('SEL_DETAIL',"EL_NUMERO" ,"COMP00-0009") oMdlTab:SetValue('SEL_DETAIL',"EL_VALOR" ,500) oMdlTab:SetValue('SEL_DETAIL',"EL_BANCO" ,"CX1") oMdlTab:SetValue('SEL_DETAIL',"EL_AGENCIA" ,"00001") oMdlTab:SetValue('SEL_DETAIL',"EL_CONTA" ,"0000000001") oMdlTab:SetValue('SEL_DETAIL',"EL_FORPGO" ,"17") // Forma de pago 17 - Compensación oMdlTab:SetValue('FAC_DETAIL','FACTOR',"2") // Recibo por compensaciones oMdlTab:SetValue('SEL_DETAIL',"EL_IDENTEE" , "000002") // Código de la compensación oMdlTab:SetValue('SEL_DETAIL',"EL_FCHIDEN" , STOD("20221229")) // Fecha en que se realizo la compensación. oMdlTab:SetValue('GEN_DETAIL',"HOURSAVERECEIPT" , "12:00:13" ) //Se ejecuta el commit If oMdlTab:VldData() oMdlTab:CommitData() Endif // Se obtienen los errores del modelo aError := oMdlTab:GetErrorMessage() If alltrim(aError[7]) <> "" cMsj := aError[7] else // Si no hubo errores al grabar recibo se procede con el timbrado jData['origin'] := "FINA998" jData['imppdf'] := .T. jData['sendemail'] := .F. jData['email'] := "" jData['emailcc'] := "" jData['serie'] := cSerie jData['recibo'] := cRecibo jData['cliente'] := cCliente jData['filial'] := xFilial("SEL") jData['client'] := cCliente FISA815(cRecibo, cSerie,,,@aResTmp,jData,cSerieS,cReciboS,cMotC) // Ciclo para concatenar la respuesta del timbrado. For nY := 1 To Len(aResTmp) cMsj += aResTmp[nY][3] + cCRLF Next nY Endif CONOUT("Mensaje de proceso: "+cMsj) oMdlTab:DeActivate() Return |
Procesos especificos para Argentina | Uruguay
Diferencia cambiaria
Para la generación de diferencia de cambio se requiere informar el parámetro MV_DIFCAMR igual a "S". A continuación se presenta un ejemplo para realizar la diferencia de cambio a traves del modelo:
Bloco de código | ||||
---|---|---|---|---|
| ||||
#INCLUDE "PROTHEUS.CH" #INCLUDE "FWMVCDEF.CH" #INCLUDE "FWEVENTVIEWCONSTS.CH" #INCLUDE 'FINA887.CH' Function F887FINAUTO() Local oMdlTab Local cCRLF := (chr(10)+chr(13)) Local cMsj := "Recibo registrado con exito." + cCRLF Local cRecibo := "000000000052" Local cSerie := "A " Local cCliente := "M14011" Local aResTmp := {} Local nY := 0 SetFunName("FINA887") oMdlTab := FwLoadModel("FINA887") oMdlTab:SetOperation(MODEL_OPERATION_INSERT) oMdlTab:Activate() //Encabezado - FJT oMdlTab:SetValue('FJT_MASTER', "FJT_FILIAL" , xFilial("FJT")) // FILIAL oMdlTab:SetValue('FJT_MASTER', "FJT_DTDIGI" , dDataBase ) oMdlTab:SetValue('FJT_MASTER', "FJT_RECIBO" , cRecibo) oMdlTab:SetValue('FJT_MASTER', "FJT_SERIE" , cSerie) oMdlTab:SetValue('FJT_MASTER', "FJT_EMISSA" , dDataBase) oMdlTab:SetValue('FJT_MASTER', "FJT_NATURE" , "COBRO ") oMdlTab:SetValue('FJT_MASTER', "FJT_CLIENT" , cCliente) oMdlTab:SetValue('FJT_MASTER', "FJT_LOJA" , "01") oMdlTab:SetValue('FJT_MASTER', "FJT_COBRAD" , "") oMdlTab:SetValue('FJT_MASTER', "FJT_RECPRV" ,"") oMdlTab:SetValue('FJT_MASTER', "GERANCC" , "") oMdlTab:SetValue('FJT_MASTER', "DOCUMEN" , "RA") Pergunte("FIN998",.F.) oMdlTab:SetValue('FJT_MASTER', "ASIENTO" , MV_PAR01) // ¿Muestra Asientos ? oMdlTab:SetValue('FJT_MASTER', "AGRUPA" , MV_PAR02) // ¿Agrupa Asientos ? oMdlTab:SetValue('FJT_MASTER', "ONLINE" , MV_PAR03) //¿Asientos Online ? //Monedas oMdlTab:SetValue('MOE_DETAIL',"MOEDA" , "1") oMdlTab:SetValue('MOE_DETAIL',"TASA" , 1) oMdlTab:SetValue('MOE_DETAIL',"RECIBIDO" , 0) oMdlTab:SetValue('MOE_DETAIL',"SALDO" , 0 ) oMdlTab:GetModel('MOE_DETAIL' ):AddLine() oMdlTab:SetValue('MOE_DETAIL',"MOEDA" , "2") oMdlTab:SetValue('MOE_DETAIL',"TASA" , 25.0000) oMdlTab:SetValue('MOE_DETAIL',"RECIBIDO" , 1000) oMdlTab:SetValue('MOE_DETAIL',"SALDO" , 0 ) // Agregar la forma de pago oMdlTab:SetValue('SEL_DETAIL',"EL_CLIENTE" , cCliente ) oMdlTab:SetValue('SEL_DETAIL',"EL_NATUREZ" , "COBRO ") oMdlTab:SetValue('SEL_DETAIL',"EL_LOJA" , "01") oMdlTab:SetValue('SEL_DETAIL',"EL_DTDIGIT" , dDataBase) oMdlTab:SetValue('SEL_DETAIL',"EL_TIPO" , "TF") oMdlTab:SetValue('SEL_DETAIL',"EL_FILIAL" , xFilial("SEL")) oMdlTab:SetValue('SEL_DETAIL',"EL_TIPODOC" , "TF") oMdlTab:SetValue('SEL_DETAIL',"EL_MOEDA" , "2") oMdlTab:SetValue('SEL_DETAIL',"EL_EMISSAO" ,dDataBase) oMdlTab:SetValue('SEL_DETAIL',"EL_DTVCTO" ,dDataBase) oMdlTab:SetValue('SEL_DETAIL',"EL_TPCRED" ,"1") oMdlTab:SetValue('SEL_DETAIL',"EL_ACREBAN" ,"1") oMdlTab:SetValue('SEL_DETAIL',"EL_TERCEIR" ,"") oMdlTab:SetValue('SEL_DETAIL',"EL_ENDOSSA" ,"") oMdlTab:SetValue('SEL_DETAIL',"EL_TRANSIT" ,"2") oMdlTab:SetValue('SEL_DETAIL',"EL_VERSAO" ,"00") oMdlTab:SetValue('SEL_DETAIL',"EL_SELDOC" ,"2") oMdlTab:SetValue('SEL_DETAIL',"EL_PREFIXO" ,"TF") oMdlTab:SetValue('SEL_DETAIL',"EL_NUMERO" ,"DIF-0000") oMdlTab:SetValue('SEL_DETAIL',"EL_VALOR" ,600) oMdlTab:SetValue('SEL_DETAIL',"EL_BANCO" ,"030") oMdlTab:SetValue('SEL_DETAIL',"EL_AGENCIA" ,"0002 ") oMdlTab:SetValue('SEL_DETAIL',"EL_CONTA" ,"124681012 ") oMdlTab:GetModel('SEL_DETAIL' ):AddLine() oMdlTab:SetValue('SEL_DETAIL',"EL_CLIENTE" , cCliente ) oMdlTab:SetValue('SEL_DETAIL',"EL_NATUREZ" , "COBRO ") oMdlTab:SetValue('SEL_DETAIL',"EL_LOJA" , "01") oMdlTab:SetValue('SEL_DETAIL',"EL_DTDIGIT" , dDataBase) oMdlTab:SetValue('SEL_DETAIL',"EL_TIPO" , "EF") oMdlTab:SetValue('SEL_DETAIL',"EL_FILIAL" , xFilial("SEL")) oMdlTab:SetValue('SEL_DETAIL',"EL_TIPODOC" , "EF") oMdlTab:SetValue('SEL_DETAIL',"EL_MOEDA" , "2") oMdlTab:SetValue('SEL_DETAIL',"EL_EMISSAO" ,dDataBase) oMdlTab:SetValue('SEL_DETAIL',"EL_DTVCTO" ,dDataBase) oMdlTab:SetValue('SEL_DETAIL',"EL_TPCRED" ,"1") oMdlTab:SetValue('SEL_DETAIL',"EL_ACREBAN" ,"1") oMdlTab:SetValue('SEL_DETAIL',"EL_TERCEIR" ,"") oMdlTab:SetValue('SEL_DETAIL',"EL_ENDOSSA" ,"") oMdlTab:SetValue('SEL_DETAIL',"EL_TRANSIT" ,"2") oMdlTab:SetValue('SEL_DETAIL',"EL_VERSAO" ,"00") oMdlTab:SetValue('SEL_DETAIL',"EL_SELDOC" ,"2") oMdlTab:SetValue('SEL_DETAIL',"EL_PREFIXO" ,"EF") oMdlTab:SetValue('SEL_DETAIL',"EL_NUMERO" ,"DIF-0009") oMdlTab:SetValue('SEL_DETAIL',"EL_VALOR" ,400) oMdlTab:SetValue('SEL_DETAIL',"EL_BANCO" ,"030") oMdlTab:SetValue('SEL_DETAIL',"EL_AGENCIA" ,"0002 ") oMdlTab:SetValue('SEL_DETAIL',"EL_CONTA" ,"124681012 ") //Detalle de los titulos oMdlTab:SetValue('SE1_DETAIL',"E1_FILIAL" , xFilial("SE1")) oMdlTab:SetValue('SE1_DETAIL',"E1_PREFIXO" , "A" ) oMdlTab:SetValue('SE1_DETAIL',"E1_NUM" ,"NF135850600B" ) oMdlTab:SetValue('SE1_DETAIL',"E1_PARCELA" , " ") oMdlTab:SetValue('SE1_DETAIL',"E1_TIPO" , "NF") oMdlTab:SetValue('SE1_DETAIL',"E1_CLIENTE" , cCliente) oMdlTab:SetValue('SE1_DETAIL',"E1_LOJA" , "01") oMdlTab:SetValue('SE1_DETAIL',"E1_DESCONT" , 0) oMdlTab:SetValue('SE1_DETAIL',"E1_MULTA" , 0) oMdlTab:SetValue('SE1_DETAIL',"E1_JUROS" , 0) oMdlTab:SetValue('SE1_DETAIL',"E1_SALDO" , 1000) oMdlTab:SetValue('SE1_DETAIL',"BAIXAR" , 1000) oMdlTab:SetValue('SE1_DETAIL',"RECNO" , 303) oMdlTab:SetValue('SE1_DETAIL',"E1_MOTIVO" , "NOR") oMdlTab:SetValue('FAC_DETAIL','FACTOR',"2") oMdlTab:SetValue('GEN_DETAIL',"HOURSAVERECEIPT" , "12:00:13" ) //Se ejecuta el commit If oMdlTab:VldData() oMdlTab:CommitData() Endif aError := oMdlTab:GetErrorMessage() If alltrim(aError[7]) <> "" cMsj := aError[7] Endif CONOUT("Mensaje de proceso: "+cMsj) oMdlTab:DeActivate() Return |
Procesos especificos para Paraguay
Recibos de cobro con retenciones.
Para generar un recibo que contenga retenciones es necesario informar las siguientes propiedades del modelo:
...
Card documentos | ||||
---|---|---|---|---|
|
05. TABLAS UTILIZADAS
- FTJ - Encabezado de recibos.
- SEL - Recibos de cobro.
- SE1 - Cuentas por cobrar.
- SFE - Certificados de retención.
- SFR - Diferencia de cambio.
- SE5 - Movimientos bancarios.