Base de conhecimento
Encontre respostas para suas dúvidas em quatro fontes de conhecimento diferentes ao mesmo tempo, simplificando o processo de pesquisa.

TOTVS RH - TOTVS RH (LINEA PROTHEUS) - MI – Gestión de Personal (SIGAGPE) - GPER884 - Error timbrado recibo de nomina México

⏱️ Tiempo aproximado para lectura: 00:15:00 min
 

Ocurrencia

En el modulo de Gestión de Personal (SIGAGPE) al realizar el timbrado del recibo de nomina a traves de la rutina GPER884, se presente el mensaje de validación y no se realiza el timbrado del recibo.:

"El resultado de la digestión debe ser igual al resultado de la descripción del sello." 


Ambiente
TOTVS RH - TOTVS RH (LINEA PROTHEUS) - MI – Gestión de Personal (SIGAGPE) – Reléase 12

 

Causa
Este incidente puede ocurrir porque no se esta generando la cadena original en el XML debido a las excepciones o personalizaciones en el archivo de configuracion GPER884.ini


 

Solución
Para solucionar esta ocurrencia, realice los siguientes pasos: 

 

  1. Baje el archivo GPER8440.ini estándar;
     

  2. Compare las personalizaciones del archivo del cliente contra las configuraciones del archivo estándar, al final del articulo se anexa un ejemplo del archivo de configuración estándar, para su consulta;
     

  3. Realice las debidas homologaciones en sus configuraciones, garantizando que la cadena original sea generada correctamente;
     

  4. Después de realizar los ajustes correspondiente y homologados, realice el timbrado nuevamente del XML del recibo de nomina.
     


    __________________________ Ejemplo Archivo de configuracion GPER8840.ini __________________________ 

     

    /*GPER884.INI V1.2 - Modelo 2017 - 20/03/2017*/
    [XXX POSICIONAMENTOS]

    [XXX INICIALIZACION]   
    (PRE) SRVPD->(DbSetOrder(1)) 
    (PRE) _aTotal[072] := SRA->RA_FILIAL
    (PRE) _aTotal[073] := SRA->RA_MAT
    (PRE) _aTotal[074] := ""
    (PRE) _aTotal[075] := CFDCarEsp(Alltrim(SM0->M0_NOMECOM))
    (PRE) _aTotal[076] := StrZero(Year(Date()),4) + "-" + StrZero(Month(Date()),2) + "-" + StrZero(Day(Date()),2) + "T" + Time() 
    (PRE) _aTotal[077] := Alltrim(MV_PAR01)+Alltrim(MV_PAR02)+Alltrim(MV_PAR03)+Alltrim(MV_PAR04)
    (PRE) _aTotal[078] := Alltrim(SRA->RA_MAT)+Alltrim(SRA->RA_FILIAL)
    (PRE) _aTotal[098] := "|"
    (PRE) _aTotal[099] := "||"
    (PRE) _aTotal[100] := ""

    //CADENA  ORIGINAL
    [SRA CADENAORIGINAL_SELLO]

    //Variable utilizada para validar si es Regimen Asimilado
    (PRE) lRegAsimil := SRA->RA_TIPREG $ "05|06|07|08|09|10|11"

    //Cadena Original
    (PRE) cCadOrig := _aTotal[099]
    //Version
    (PRE) cCadOrig += "4.0" + _aTotal[098]
    //Serie
    (PRE) cCadOrig += _aTotal[078] + _aTotal[098]
    //Folio
    (PRE) cCadOrig += _aTotal[077] + _aTotal[098]
    //Fecha
    (PRE) cCadOrig += Alltrim(_aTotal[076]) + _aTotal[098]
    //Num Certificado
    (PRE) cCadOrig += SuperGetMv("MV_CFDI_CS",,"") + _aTotal[098]
    //Subtotal
    (PRE) cCadOrig += Alltrim(Transform(Round(nTotPGrav + nTotPExen + IIf(lRegAsimil, 0, nTotOtroP), 2), "99999999.99")) + _aTotal[098]
    //Descuento
    (PRE) cCadOrig += Alltrim(Transform(Round(nOtroDedu+nImpReten,2), "99999999.99")) + _aTotal[098]
    //Moneda
    (PRE) cCadOrig += Alltrim("MXN") + _aTotal[098]
    //Total
    (PRE) cCadOrig += Alltrim(Transform(Round(nTotPGrav + nTotPExen + IIf(lRegAsimil, 0, nTotOtroP) - (nOtroDedu + nImpReten), 2), "99999999.99")) + _aTotal[098]
    //Tipo Comprobante
    (PRE) cCadOrig += Alltrim("N") + _aTotal[098]
    //Exportacion
    (PRE) cCadOrig += Alltrim("01") + _aTotal[098]
    //Metodo Pago
    (PRE) cCadOrig += Alltrim("PUE") + _aTotal[098]
    //Lugar de expedici n
    (PRE) cCadOrig += CFDCarEsp(AllTrim(RGC->RGC_CODPOS)) + _aTotal[098] 
    //Tipo Relacionados
    (PRE) cCadOrig += NodoRelacc(3) 
    //UUIDS Relacionados
    (PRE) cCadOrig += NodoRelacc(1)

    //COMPROBANTE:EMISOR
    //:RFC
    (PRE) cCadOrig += CFDCarEsp(Alltrim(SM0->M0_CGC)) + _aTotal[098]
    //:Nombre
    (PRE) cCadOrig += Alltrim(SM0->M0_NOMECOM) + _aTotal[098]
    //:Regimen
    (PRE) cCadOrig += cTipoReg + _aTotal[098]

    //COMPROBANTE:RECEPTOR
    //:RFC
    (PRE) cCadOrig += CFDCarEsp(AllTrim(SRA->RA_CIC)) + _aTotal[098]
    //:Nombre
    (PRE) cCadOrig += AllTrim(SRA->RA_NOME) + _aTotal[098]
    //:DomicilioFiscalReceptor
    (PRE) cCadOrig += CFDCarEsp(Alltrim(SRA->RA_CEP)) + _aTotal[098]
    //:RegimenFiscalReceptor
    (PRE) cCadOrig += CFDCarEsp(Alltrim(Iif(SRA->(ColumnPos("RA_FISCALI")) > 0,SRA->RA_FISCALI,""))) + _aTotal[098]
    //:UsoCFDI
    (PRE) cCadOrig += Alltrim("CN01") + _aTotal[098]

    //COMPROBANTE:CONCEPTOS
    //Clave Servicio
    (PRE) cCadOrig += AllTrim("84111505")+ _aTotal[098]
    //:Cantidad
    (PRE) cCadOrig += Alltrim("1")+ _aTotal[098]
    //:Unidad de medida
    (PRE) cCadOrig += Alltrim("ACT")+ _aTotal[098]
    //:Descripcion
    (PRE) cCadOrig += DECODEUTF8(AllTrim("Pago de nómina")) + _aTotal[098]
    //:valorUnitario
    (PRE) cCadOrig += AllTrim(Transform(Round(nTotPGrav + nTotPExen + IIf(lRegAsimil, 0, nTotOtroP),2), "99999999.99")) + _aTotal[098]
    //Importe
    (PRE) cCadOrig += AllTrim(Transform(Round(nTotPGrav + nTotPExen + IIf(lRegAsimil, 0, nTotOtroP),2), "99999999.99")) + _aTotal[098]
    //TotalDeducciones
    (PRE) cCadOrig += Alltrim(Transform(Round(nTotDGrav+nTotDExen,2), "99999999.99")) + _aTotal[098]
    //ObjetoImp
    (PRE) cCadOrig += Alltrim("01")+ _aTotal[098]

    //NOMINA
    //version
    (PRE) cCadOrig += "1.2" + _aTotal[098]
    //TipoNomina
    (PRE) cCadOrig += IIf(SRY->RY_TIPO == "1" .And. !lImprIndem, "O", "E") + _aTotal[098]
    //FechaPago
    (PRE) cCadOrig += Alltrim(STR(YEAR(dFchPag)))+"-"+ STRZERO(MONTH(dFchPag),2) +"-"+STRZERO(DAY(dFchPag),2) + _aTotal[098]
    //FechaInicialPago
    (PRE) cCadOrig += Alltrim(STR(YEAR(dFchInPag)))+"-"+ STRZERO(MONTH(dFchInPag),2) +"-"+STRZERO(DAY(dFchInPag),2) + _aTotal[098]
    //FechaFinalPago
    (PRE) cCadOrig += Alltrim(STR(YEAR(dFchFiPag)))+"-"+ STRZERO(MONTH(dFchFiPag),2) +"-"+STRZERO(DAY(dFchFiPag),2) + _aTotal[098]
    //NumDiasPagados
    (PRE) cCadOrig += Alltrim(IIf(nDiasPag == 0, "1", Transform(nDiasPag, "99999.999"))) + _aTotal[098]
    //TotalPercepciones
    (PRE) cCadOrig += IIf(nTotPGrav+nTotPExen <> 0, Alltrim(Transform(Round(nTotPGrav+nTotPExen,2), "99999999.99")) + _aTotal[098], "")
    //TotalDeducciones
    (PRE) cCadOrig += IIf(nTotDGrav+nTotDExen <> 0, Alltrim(Transform(Round(nTotDGrav+nTotDExen,2), "99999999.99")) + _aTotal[098], "")
    //TotalOtrosPagos
    (PRE) cCadOrig += IIf(nTotOtroP <> 0 .And. !lRegAsimil, AllTrim(Transform(Round(nTotOtroP,2), "99999999.99")) + _aTotal[098], "")

    //EMISOR
    //RegistroPatronal
    (PRE) cCadOrig += IIf(SRA->RA_CATFUNC <> 'A' .And. !lRegAsimil .And. !lImprIndem, AllTrim(cRegPatr) + _aTotal[098], "")
    //RfcPatronOrigen
    (PRE) cCadOrig += CFDCarEsp(Alltrim(SM0->M0_CGC)) + _aTotal[098]

    //EntidadSNCF
    (PRE) IIf(!Empty(cOrigRecur), cCadOrig += Alltrim(cOrigRecur) + _aTotal[098], "")
    (PRE) IIf(!Empty(cOrigRecur), cCadOrig += Alltrim(Transform(Round(nTotPGrav+nTotPExen,2), "99999999.99")) + _aTotal[098], "")

    //RECEPTOR
    //Curp
    (PRE) cCadOrig += Alltrim(SRA->RA_CURP) + _aTotal[098]
    //NumSeguridadSocial
    (PRE) IIf(SRA->RA_CATFUNC <> 'A' .And. !lRegAsimil .And. !lImprIndem, cCadOrig += AllTrim(SRA->RA_RG) + _aTotal[098], "")
    //FechaInicioRelLaboral
    (PRE) IIf(SRA->RA_CATFUNC <> 'A' .And. !lRegAsimil .And. !lImprIndem, cCadOrig += AllTrim(Str(Year(dFchInLab))) + "-" + StrZero(Month(dFchInLab),2) + "-" + StrZero(Day(dFchInLab),2) + _aTotal[098], "")
    //Antigüedad
    (PRE) IIf(SRA->RA_CATFUNC <> 'A' .And. !lRegAsimil .And. !lImprIndem, cCadOrig += 'P' + AllTrim(Str(nAntigue)) + 'W' + _aTotal[098], "")
    //TipoContrato
    (PRE) cCadOrig += IIf(lImprIndem,"99", Alltrim(SRA->RA_TIPCON)) + _aTotal[098]
    //Sindicalizado
    (PRE) IIf(SRA->RA_CATFUNC <> 'A', cCadOrig += IIf(!Empty(SRA->RA_SINDICA) .And. !lRegAsimil, "Sí", "No") + _aTotal[098], "")
    //TipoJornada
    (PRE) IIf(SRA->RA_CATFUNC <> 'A' .And. !lRegAsimil, cCadOrig += AllTrim(cTipJorn) + _aTotal[098], "")
    //TipoRegimen
    (PRE) cCadOrig += IIf(lImprIndem,"13",AllTrim(SRA->RA_TIPREG)) + _aTotal[098]
    //NumEmpleado
    (PRE) cCadOrig += AllTrim(SRA->RA_MAT) + _aTotal[098]
    //Departamento
    //MOD (PRE) cCadOrig += IIf(!Empty(cDeptoIm), AllTrim(cDeptoIm), "") + _aTotal[098]
    (PRE) cCadOrig += IIf(!Empty(cDeptoIm), AllTrim(cDeptoIm) + _aTotal[098], "")
    //Puesto
    (PRE) cCadOrig += IIf(!Empty(cPuesCfdi), AllTrim(cPuesCfdi) + _aTotal[098], "")
    //RiesgoPuesto
    (PRE) cCadOrig += IIf(!lRegAsimil .AND. !lImprIndem, IIf(SRA->RA_CATFUNC <> 'A', AllTrim(cRiegCFDi), AllTrim("99"))  + _aTotal[098], "")
    //PeriodicidadPago
    (PRE) cCadOrig += CFDCarEsp(Alltrim(IIf(SRY->RY_TIPO == "1",cPerCFDi, "99"))) + _aTotal[098]
    //Banco
    (PRE) IIf(!Empty(SRA->RA_CLABE),,cCadOrig += IIf(!Empty(cBcoCfdi), Alltrim(cBcoCfdi) + _aTotal[098], ""))
    //CLABE
    (PRE) cCadOrig += IIf(!Empty(SRA->RA_CLABE), Alltrim(SRA->RA_CLABE), Alltrim(SRA->RA_CTDEPSA)) + _aTotal[098]
    //SalarioBaseCotApor
    (PRE) IIf(SRA->RA_CATFUNC <> 'A', cCadOrig += Alltrim(Transform(Round(nSalBasAp,2), "99999999.99")) + _aTotal[098], "")
    //SalarioDiarioIntegrado
    (PRE) IIf(SRA->RA_CATFUNC <> 'A' .And. !lRegAsimil .And. !lImprIndem, cCadOrig += AllTrim(Transform(Round(SRA->RA_SALINT,2), "99999999.99")) + _aTotal[098], "")
    //ClaveEntFed
    (PRE) cCadOrig += Alltrim(cEntFed) + _aTotal[098]

    //SUBCONTRATACION
    //RfcLabora
    (PRE) cCadOrig += IIf(SRA->RA_PORSUB <> 0, Alltrim(SRA->RA_RFCLAB) + _aTotal[098], "")
    //PorcentajeTiempo
    (PRE) cCadOrig += IIf(SRA->RA_PORSUB <> 0, Alltrim(Str(SRA->RA_PORSUB)) + _aTotal[098], "")

    //PERCEPCIONES
    //TotalSueldos
    (PRE) IIf(nTotSueld <> 0, cCadOrig += Alltrim(Transform(Round(nTotSueld,2), "99999999.99")) + _aTotal[098], "")
    //TotalSeparacionIndemnizacion
    (PRE) IIf(nTotIndem <> 0, cCadOrig += Alltrim(Transform(Round(nTotIndem,2), "99999999.99")) + _aTotal[098], "")
    //TotalJubilacionPensionRetiro
    (PRE) IIf(nTotJubil <> 0, cCadOrig += Alltrim(Transform(Round(nTotJubil,2), "99999999.99")) + _aTotal[098], "")
    //TotalGravado
    (PRE) IIf(MV_PAR02 <> '05' .Or. nTotPGrav <> 0, cCadOrig += Alltrim(Transform(Round(nTotPGrav,2), "99999999.99")) + _aTotal[098], "")
    //TotalExento
    (PRE) IIf(MV_PAR02 <> '05' .Or. nTotPExen <> 0, cCadOrig += Alltrim(Transform(Round(nTotPExen,2), "99999999.99")) + _aTotal[098], "")
    //PERCEPCION (AccionesOTitulos y/o Horas Extras)
    (PRE) VldCad884("1")

    //JubilacionPensionRetiro
    //TotalUnaExhibicion
    (PRE) IIf(nTotUnaEx <> 0, cCadOrig += Alltrim(Transform(Round(nTotUnaEx,2), "99999999.99")) + _aTotal[098], "")
    //TotalParcialidad
    (PRE) IIf(nTotParci <> 0, cCadOrig += Alltrim(Transform(Round(nTotParci,2), "99999999.99")) + _aTotal[098], "")
    //MontoDiario
    (PRE) IIf(nTotParci <> 0, cCadOrig += Alltrim(Transform(Round(nTotDiari,2), "99999999.99")) + _aTotal[098], "")
    //IngresoAcumulable
    (PRE) IIf(nTotUnaEx+nTotParci <> 0, cCadOrig += Alltrim(Transform(Round(nTotIAcum,2), "99999999.99")) + _aTotal[098], "")
    //IngresoNoAcumulable
    (PRE) IIf(nTotUnaEx+nTotParci <> 0, cCadOrig += Alltrim(Transform(Round(NTotNAcum,2), "99999999.99")) + _aTotal[098], "")

    //SeparacionIndemnizacion 
    //TotalPagado
    (PRE) IIf(nTotPagad <> 0, cCadOrig += Alltrim(Transform(Round(nTotPagad,2), "99999999.99")) + _aTotal[098], "")
    //NumAñosServicio
    (PRE) IIf(nTotPagad <> 0, cCadOrig += Alltrim(Str(IIf(nNumAnios==0, 1, nNumAnios))) + _aTotal[098], "")
    //UltimoSueldoMensOrd
    (PRE) IIf(nTotPagad <> 0, cCadOrig += Alltrim(Transform(Round(nUltSuelM,2), "99999999.99")) + _aTotal[098], "")
    //IngresoAcumulable
    (PRE) IIf(nTotPagad <> 0, cCadOrig += Alltrim(Transform(Round(nIngrAcum,2), "99999999.99")) + _aTotal[098], "")
    //IngresoNoAcumulable
    (PRE) IIf(nTotPagad <> 0, cCadOrig += Alltrim(Transform(Round(nIngrNAcu,2), "99999999.99")) + _aTotal[098], "")

    //DEDUCCIONES
    //TotalOtrasDeducciones
    (PRE) IIf(nOtroDedu <> 0, cCadOrig += Alltrim(Transform(Round(nOtroDedu,2), "99999999.99")) + _aTotal[098], "")
    //TotalImpuestosRetenidos
    (PRE) IIf(nImpReten <> 0, cCadOrig += Alltrim(Transform(Round(nImpReten,2), "99999999.99")) + _aTotal[098], "")
    //DEDUCCION
    (PRE) VldCad884("2")

    //OtroPago
    //TipoOtroPago (SubsidioAlEmpleo - CompensacionSaldosAFavor)
    (PRE) IIf(!lRegAsimil, VldCad884("3"), .T.)

    //Incapacidad
    (PRE) VldCad884("4")  

    (PRE) cCadOrig += _aTotal[098]
    (POS) _aTotal[074] := ENCODEUTF8(cCadOrig)
    (POS) cCadOrig := ENCODEUTF8(cCadOrig)
    //Sello
    (POS) _aTotal[100] := LjHex2Asc(SHA256(cCadOrig,2))
    (POS) _aTotal[100] := PrivSignRSA(&(SuperGetMv("MV_CFDDIRS",,""))+SuperGetMv("MV_CFDI_KP",,""),_aTotal[100],6,"assinatura")
    (POS) _aTotal[100] := ENCODE64(_aTotal[100])

    //                                          C O N F I G U R A C I O N    D E L    A R C H I V O :    R E C N O M . INI
    [XXX CABECERA]
    Linha1     C 041 0 Chr(239) + Chr(187) + Chr(191) + '<?xml version="1.0" encoding="UTF-8"?>'

    //CFDI:  CFDI:COMPROBANTE
    [XXX CFDI]

    //Variable utilizada para validar si es Regimen Asimilado
    (PRE) lRegAsimil := SRA->RA_TIPREG $ "05|06|07|08|09|10|11"

    //Certificado
    //CSD_XIA190128J61c.pem XIA190128J61 - pruebas SAT
    (PRE) cCert01 := "MIIFyDCCA7CgAwIBAgIUMzAwMDEwMDAwMDA0MDAwMDI0NDMwDQYJKoZIhvcNAQEL"
    (PRE) cCert01 += "BQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFE"
    (PRE) cCert01 += "TUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9y"
    (PRE) cCert01 += "aXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0w"
    (PRE) cCert01 += "GwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWRpejEOMAwGA1UEEQwFMDYzNzAxCzAJ"
    (PRE) cCert01 += "BgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhD"
    (PRE) cCert01 += "T1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3Bv"
    (PRE) cCert01 += "bnNhYmxlOiBBQ0RNQS1TQVQwHhcNMTkwNjE3MjA0MDUxWhcNMjMwNjE3MjA0MDUx"
    (PRE) cCert01 += "WjCB7zEqMCgGA1UEAxMhWEVOT04gSU5EVVNUUklBTCBBUlRJQ0xFUyBTIERFIENW"
    (PRE) cCert01 += "MSowKAYDVQQpEyFYRU5PTiBJTkRVU1RSSUFMIEFSVElDTEVTIFMgREUgQ1YxKjAo"
    (PRE) cCert01 += "BgNVBAoTIVhFTk9OIElORFVTVFJJQUwgQVJUSUNMRVMgUyBERSBDVjElMCMGA1UE"
    (PRE) cCert01 += "LRMcWElBMTkwMTI4SjYxIC8gS0FITzY0MTEwMUIzOTEeMBwGA1UEBRMVIC8gS0FI"
    (PRE) cCert01 += "TzY0MTEwMUhOVExLUzA2MSIwIAYDVQQLExlYZW5vbiBJbmR1c3RyaWFsIEFydGlj"
    (PRE) cCert01 += "bGVzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAiJQ5YcSgjwsGf29+"
    (PRE) cCert01 += "3go7VGdtMZCcH9wUpn46ZMAlFwUojnCPTvwJ3+cSwjqJnw8ahr3DuRwekvGR4BJA"
    (PRE) cCert01 += "b5b9Xi8kyoiWtwcGOSWxO38Bp9J1e/BO9HMbQBPAtLDuG47oqnH8zWLOeaoYRJDp"
    (PRE) cCert01 += "ARw4RX1ko2+9tbj0ntBtM7Vk1E8EWiA/h2Meq0LIv1+ySGTUrEW46FM01J5pzELv"
    (PRE) cCert01 += "5XupBghuJxR5DG9fiOW7u3dR5s3tZoVLwA1KdjJtY0mmnfCwxg6i5AqhvY+FAI5D"
    (PRE) cCert01 += "6CF6/lHA8PWg63WasvrhuIv70xCLjgPT/j00ZcPrLvBf1DefGVic980Ch/SDvC+M"
    (PRE) cCert01 += "dJ1F5wIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG"
    (PRE) cCert01 += "9w0BAQsFAAOCAgEACjfTPoKY2N5MxjmAMltd5XZCV1vgAwEtrIRYTodhE8R0Tp1Q"
    (PRE) cCert01 += "anAXb0luPyBv5hIXWK4VqAI4fcTtP+n7kkrwfha6ErkPWFNJWJm8ZsMmby/3WgVo"
    (PRE) cCert01 += "JkOFyRYQqr5Il3N6wMa5kiDBtDRbqB3iEXmvtrvjWSHyxAER+zo3jWGFlhBZ0nQN"
    (PRE) cCert01 += "Rtjx8sPFihVc5TUH682HJiU4oWvT63Dnra8ncqiW/uCuY86crnUq0fW7Lw/3+PY5"
    (PRE) cCert01 += "xXjNxR/Hh3sUPITfJrGaLWurD1J9npr9yGAJ6t9zrhhZnepIC0DUMc5+j4pg1DrO"
    (PRE) cCert01 += "32jzwUOLQqErDizh84NoJCWwbg+US8wi3zD0ZKiDv7XsTNWAW2Ap2JkzykKHjFTZ"
    (PRE) cCert01 += "iEm3uZOkJNfcu3o+kefr5HfXFT+iN9K5FUEhaQwgUeZBRJ8V5F6gmhz3d6ixVbiZ"
    (PRE) cCert01 += "oFNhYR8e2k8gF9gGrVMrEbJGQrl+6+ZYQLFiauXeG7fu1svk19PuyredRJGnseJq"
    (PRE) cCert01 += "yV4RzcRGhJA+cLnmpdDOTEhignnvnhEuY6HVRYYXhOTyeeluET7KRCxbJGqO7TdW"
    (PRE) cCert01 += "gjrHL3HRbNE4NY5GAdOZuLaWxElG5ZVCHqtG0Nh7UQAhcz+EKyZBAewv5XuH0Oom"
    (PRE) cCert01 += "ZXw6mM2mY2soL6z1224NusM8/BbJcYTQUlAEKblEChhGK1XlxiVOU2nc9KE="

    (PRE) if (SM0->M0_CODIGO == '01', cCert := cCert01,cCert := cCert01)

    (PRE) _aTotal[001] := '<cfdi:Comprobante'
    (PRE) _aTotal[001] += ' xmlns:cfdi="http://www.sat.gob.mx/cfd/4"'
    (PRE) _aTotal[001] += ' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"'
    (PRE) _aTotal[001] += ' xmlns:nomina12="http://www.sat.gob.mx/nomina12"'
    (PRE) _aTotal[001] += ' xsi:schemaLocation="http://www.sat.gob.mx/cfd/4 http://www.sat.gob.mx/sitio_internet/cfd/4/cfdv40.xsd http://www.sat.gob.mx/nomina12 http://www.sat.gob.mx/sitio_internet/cfd/nomina/nomina12.xsd"'
    (PRE) _aTotal[001] += ' Version="4.0"'
    (PRE) _aTotal[001] += ' Serie="' + _aTotal[078] + '"'
    (PRE) _aTotal[001] += ' Folio="' + _aTotal[077] + '"'
    (PRE) _aTotal[001] += ' Fecha="' + _aTotal[076]+ '"'  
    (PRE) _aTotal[001] += ' Sello="' + Alltrim(_aTotal[100]) + '"'
    (PRE) _aTotal[001] += ' NoCertificado="' + SuperGetMv("MV_CFDI_CS",,"") + '"'   
    (PRE) _aTotal[001] += ' Certificado="' + cCert + '"'
    (PRE) _aTotal[001] += ' SubTotal="' + AllTrim(Transform(Round(nTotPGrav + nTotPExen + IIf(lRegAsimil, 0, nTotOtroP), 2), "99999999.99")) + '"'
    (PRE) _aTotal[001] += ' Descuento="' + Alltrim(Transform(Round(nOtroDedu+nImpReten,2), "99999999.99")) + '"'
    (PRE) _aTotal[001] += ' Moneda="' + Alltrim("MXN") + '"'
    (PRE) _aTotal[001] += ' Total="' + AllTrim(Transform(Round(nTotPGrav + nTotPExen + IIf(lRegAsimil, 0, nTotOtroP) - (nOtroDedu + nImpReten), 2), "99999999.99")) + '"'
    (PRE) _aTotal[001] += ' TipoDeComprobante="' + AllTrim("N") + '"'
    (PRE) _aTotal[001] += ' Exportacion="' + Alltrim("01") + '"'
    (PRE) _aTotal[001] += ' MetodoPago="' + Alltrim("PUE") + '"'
    (PRE) _aTotal[001] += ' LugarExpedicion="' + CFDCarEsp(AllTrim(RGC->RGC_CODPOS)) + '"'
    (PRE) _aTotal[001] += '>'
    (PRE) _aTotal[001] := ENCODEUTF8(_aTotal[001])
    (PREREG) _aTotal[001]

    //COMPROBANTE: CFDI:CfdiRelacionado
    [XXX CfdiRelacionados]
    (PRE) _aTotal[001] := NodoRelacc(2)
    (PRE) _aTotal[001] := ENCODEUTF8(_aTotal[001])
    (PREREG) _aTotal[001]

    //COMPROBANTE:  CFDI:EMISOR
    [XXX EMISOR]
    (PRE) _aTotal[001] := '    <cfdi:Emisor'
    (PRE) _aTotal[001] += ' Rfc="' + CFDCarEsp(Alltrim(SM0->M0_CGC)) + '"'
    (PRE) _aTotal[001] += ' Nombre="' + _aTotal[075] + '"'
    (PRE) _aTotal[001] += ' RegimenFiscal="' + cTipoReg + '"'
    (PRE) _aTotal[001] += '/>'
    (PRE) _aTotal[001] := ENCODEUTF8(_aTotal[001])
    (PREREG) _aTotal[001]

    //COMPROBANTE:  CFDI:RECEPTOR
    [XXX RECEPTOR]
    (PREREG) (_aTotal[001] := '    <cfdi:Receptor' , .T.)
    (PREREG) (_aTotal[001] += ' Rfc="' + CFDCarEsp(AllTrim(SRA->RA_CIC)) + '"' , .T.)
    (PREREG) (_aTotal[001] += ' Nombre="' + AllTrim(SRA->RA_NOME) + '"' , .T.)
    (PREREG) (_aTotal[001] += ' DomicilioFiscalReceptor="' + CFDCarEsp(Alltrim(SRA->RA_CEP)) + '"' , .T.)
    (PREREG) (_aTotal[001] += ' RegimenFiscalReceptor="' + CFDCarEsp(Alltrim(Iif(SRA->(ColumnPos("RA_FISCALI")) > 0,SRA->RA_FISCALI,""))) + '"' , .T.)
    (PREREG) (_aTotal[001] += ' UsoCFDI="' + CFDCarEsp( "CN01") + '"' , .T.)
    (PREREG) (_aTotal[001] += '/>' ,.T.)
    (PREREG) (_aTotal[001] := ENCODEUTF8(_aTotal[001]) , .T.)
    (PREREG) _aTotal[001]

    //COMPROBANTE:  CFDI:COCEPTOS
    [XXX CONCEPTOS]
    CONCEPTOS  C 021 0 ENCODEUTF8(XMLConv("",,,"cfdi:Conceptos",.T.,.F.,4))

    [XXX CONCEPTO]

    //Variable utilizada para validar si es Regimen Asimilado
    (PRE) lRegAsimil := SRA->RA_TIPREG $ "05|06|07|08|09|10|11"

    (PREREG) (_aTotal[002] := '        <cfdi:Concepto',.T.)
    (PREREG) (_aTotal[002] += ' ClaveProdServ="'+AllTrim("84111505")+'"',.T.)
    (PREREG) (_aTotal[002] += ' Cantidad="' + Alltrim("1") + '"',.T.)
    (PREREG) (_aTotal[002] += ' ClaveUnidad="' + Alltrim("ACT") + '"',.T.)
    (PREREG) (_aTotal[002] += ' Descripcion="' + DECODEUTF8(AllTrim("Pago de nómina")) + '"',.T.)
    (PREREG) (_aTotal[002] += ' ValorUnitario="' + Alltrim(Transform(Round(nTotPGrav + nTotPExen + IIf(lRegAsimil, 0, nTotOtroP),2), "99999999.99")) + '"',.T.)
    (PREREG) (_aTotal[002] += ' Importe="' + Alltrim(Transform(Round(nTotPGrav + nTotPExen + IIf(lRegAsimil, 0, nTotOtroP),2), "99999999.99")) + '"',.T.)
    (PREREG) (_aTotal[002] += ' Descuento="' + Alltrim(Transform(Round(nTotDGrav+nTotDExen,2), "99999999.99")) + '"',.T.)
    (PREREG) (_aTotal[002] += ' ObjetoImp="' + Alltrim("01") + '"',.T.)
    (PREREG) (_aTotal[002] += '/>',.T.)
    (PREREG) (_aTotal[078] ++,.T.)
    (PREREG) ENCODEUTF8(_aTotal[002])

    [XXX CONCEPTOS]
    CONCEPTOS  C 021 0 ENCODEUTF8(XMLConv("",,,"cfdi:Conceptos",.F.,.T.,4))

    //COMPLEMENTO:  CFDI:COMPLEMENTO
    [XXX COMPLEM]
    COMPLEM    C 023 0 ENCODEUTF8(XMLConv("",,,"cfdi:Complemento",.T.,.F.,4))

    //COMPLEMENTO:  NOMINA:NOMINA
    [XXX NOMINA]

    //Variable utilizada para validar si es Regimen Asimilado
    (PRE) lRegAsimil := SRA->RA_TIPREG $ "05|06|07|08|09|10|11"

    (PRE) _aTotal[001] := '    <nomina12:Nomina'
    (PRE) _aTotal[001] += ' Version="1.2"'
    (PRE) _aTotal[001] += ' TipoNomina="' + IIf(SRY->RY_TIPO == "1" .And. !lImprIndem, "O", "E") + '"'
    (PRE) _aTotal[001] += ' FechaPago="' + Alltrim(STR(YEAR(dFchPag)))+"-"+ STRZERO(MONTH(dFchPag),2) +"-"+STRZERO(DAY(dFchPag),2)+ '"'        
    (PRE) _aTotal[001] += ' FechaInicialPago="' + Alltrim(STR(YEAR(dFchInPag)))+"-"+ STRZERO(MONTH(dFchInPag),2) +"-"+STRZERO(DAY(dFchInPag),2)+ '"'
    (PRE) _aTotal[001] += ' FechaFinalPago="' + Alltrim(STR(YEAR(dFchFiPag)))+"-"+ STRZERO(MONTH(dFchFiPag),2) +"-"+STRZERO(DAY(dFchFiPag),2)+ '"'
    (PRE) _aTotal[001] += ' NumDiasPagados="' + Alltrim(IIf(nDiasPag == 0, "1", Transform(nDiasPag, "99999.999"))) + '"'
    (PRE) _aTotal[001] += IIf(nTotPGrav+nTotPExen <> 0, ' TotalPercepciones="' + Alltrim(Transform(Round(nTotPGrav+nTotPExen,2), "99999999.99")) + '"', "")
    (PRE) _aTotal[001] += IIf(nTotDGrav+nTotDExen <> 0, ' TotalDeducciones="' + Alltrim(Transform(Round(nTotDGrav+nTotDExen,2), "99999999.99")) + '"', "")
    (PRE) _aTotal[001] += IIf(nTotOtroP <> 0 .And. !lRegAsimil, ' TotalOtrosPagos="' + Alltrim(Transform(Round(nTotOtroP,2), "99999999.99")) + '" ', "")
    (PRE) _aTotal[001] += '>'
    (PRE) _aTotal[001] := ENCODEUTF8(_aTotal[001])
    (PREREG) _aTotal[001]

    [XXX EMISOR]

    //Variable utilizada para validar si es Regimen Asimilado
    (PRE) lRegAsimil := SRA->RA_TIPREG $ "05|06|07|08|09|10|11"

    (PREREG) (NodOpcion(6),.T.)
    (PRE) _aTotal[001] := '        <nomina12:Emisor'
    (PRE) _aTotal[001] += IIf(SRA->RA_CATFUNC <> 'A' .And. !lRegAsimil .And. !lImprIndem, ' RegistroPatronal="' + Alltrim(cRegPatr) +'"', "")
    (PRE) _aTotal[001] += ' RfcPatronOrigen="' + CFDCarEsp(Alltrim(SM0->M0_CGC)) +  '"'
    (PREREG) (_aTotal[001] += IIf(Alltrim(cOrigRecur) == "", '/>', '>'),.T.)
    (PREREG) (_aTotal[001] += IIf(Alltrim(cOrigRecur) == "", "", cCRLF + cNodoSNCF),.T.)
    (PREREG) ENCODEUTF8(_aTotal[001])
    (PREREG) ( Iif ((cOrigRecur <> ""),.T.,.F.))
    EMISOR     C 026 0 ENCODEUTF8(XMLConv("",,,"nomina12:Emisor",.F.,.T.,8))

    //COMPROBANTE:  CFDI:RECEPTOR
    [XXX RECEPTOR]

    //Variable utilizada para validar si es Regimen Asimilado
    (PRE) lRegAsimil := SRA->RA_TIPREG $ "05|06|07|08|09|10|11"

    (PREREG) (NodOpcion(5),.T.)
    (PRE) _aTotal[001] := '        <nomina12:Receptor'
    (PRE) _aTotal[001] += ' Curp="' + Alltrim(SRA->RA_CURP) + '"'
    (PRE) _aTotal[001] += IIf(SRA->RA_CATFUNC <> 'A' .And. !lRegAsimil .And. !lImprIndem, ' NumSeguridadSocial="' + AllTrim(SRA->RA_RG) +'"', "")
    (PRE) _aTotal[001] += IIf(SRA->RA_CATFUNC <> 'A' .And. !lRegAsimil .And. !lImprIndem, ' FechaInicioRelLaboral="' + AllTrim(Str(Year(dFchInLab))) + "-" + StrZero(Month(dFchInLab),2) + "-" + StrZero(Day(dFchInLab),2) + '"', "")
    (PRE) _aTotal[001] += IIf(SRA->RA_CATFUNC <> 'A' .And. !lRegAsimil .And. !lImprIndem, DecodeUTF8(' Antigüedad="') + 'P' + AllTrim(Str(nAntigue)) + 'W' + '" ', "")
    (PRE) _aTotal[001] += ' TipoContrato="' + Iif(lImprIndem,"99",Alltrim(SRA->RA_TIPCON)) + '"'
    (PRE) _aTotal[001] += IIf(SRA->RA_CATFUNC <> 'A', ' Sindicalizado="' + IIf(!Empty(SRA->RA_SINDICA) .And. !lRegAsimil, "S ", "No") + '"', "")
    (PRE) _aTotal[001] += IIf(SRA->RA_CATFUNC <> 'A' .And. !lRegAsimil, ' TipoJornada="' + AllTrim(cTipJorn) + '"', "")
    (PRE) _aTotal[001] += ' TipoRegimen="' + Iif(lImprIndem,"13",Alltrim(SRA->RA_TIPREG)) + '"'
    (PRE) _aTotal[001] += ' NumEmpleado="' + Alltrim(SRA->RA_MAT) +'"'
    (PRE) _aTotal[001] += ' Departamento="' + Alltrim(cDeptoIm) + '"'
    (PRE) _aTotal[001] += ' Puesto="' + Alltrim(cPuesCfdi) + '"'
    (PRE) IIf(!lRegAsimil .AND. !lImprIndem, _aTotal[001] += IIf(SRA->RA_CATFUNC <> 'A', ' RiesgoPuesto="' + AllTrim(cRiegCFDi) + '"', ' RiesgoPuesto="' + AllTrim("99") + '"'), .T.)
    (PRE) _aTotal[001] += ' PeriodicidadPago="' + CFDCarEsp(Alltrim(IIf(SRY->RY_TIPO == "1",cPerCFDi, "99"))) + '"'
    (PRE) IIf(!Empty(SRA->RA_CLABE), ,_aTotal[001] += ' Banco="' + Alltrim(cBcoCfdi) + '"')
    (PRE) _aTotal[001] += ' CuentaBancaria="' + IIf(!Empty(SRA->RA_CLABE), Alltrim(SRA->RA_CLABE), Alltrim(SRA->RA_CTDEPSA)) + '"'
    (PRE) _aTotal[001] += IIf(SRA->RA_CATFUNC <> 'A', ' SalarioBaseCotApor="' + Alltrim(Transform(Round(nSalBasAp,2), "99999999.99")) + '"', "")
    (PRE) _aTotal[001] += IIf(SRA->RA_CATFUNC <> 'A' .And. !lRegAsimil .And. !lImprIndem, ' SalarioDiarioIntegrado="' + Alltrim(Transform(Round(SRA->RA_SALINT,2), "99999999.99")) + '"', "")
    (PRE) _aTotal[001] += ' ClaveEntFed="' + Alltrim(cEntFed) + '"'
    (PREREG) (_aTotal[001] += IIf(cNodoSubC <> "", '>', '/>'),.T.)
    (PREREG) (_aTotal[001] += IIf(cNodoSubC == "", "", cCRLF + cNodoSubC),.T.)
    (PREREG) ENCODEUTF8(_aTotal[001])
    (PREREG) ( Iif ((cNodoSubC <> ""),.T.,.F.))
    RECEPTOR   C 028 0 ENCODEUTF8(XMLConv("",,,"nomina12:Receptor",.F.,.T.,8))

    //COMPLEMENTO:  NOMINA:PERCEPCIONES
    [XXX PERCEPCION]    
    (PRE) DBSELECTAREA("SRVPD")
    (PRE) SRVPD->(DbGotop())
    (PREREG) ( Iif ((Alltrim(SRVPD->RV_TIPO) =="1"),.T.,.F.))
    (PRE) _aTotal[002] := '        <nomina12:Percepciones'
    (PRE) _aTotal[002] += IIf(nTotSueld<>0, ' TotalSueldos="' + Alltrim(Transform(Round(nTotSueld,2), "99999999.99")) + '"', "")
    (PRE) _aTotal[002] += IIf(nTotIndem<>0, ' TotalSeparacionIndemnizacion="' + Alltrim(Transform(Round(nTotIndem,2), "99999999.99")) + '"', "")
    (PRE) _aTotal[002] += IIf(nTotJubil<>0, ' TotalJubilacionPensionRetiro="' + Alltrim(Transform(Round(nTotJubil,2), "99999999.99")) + '"', "")
    (PRE) _aTotal[002] += ' TotalGravado="' + Alltrim(Transform(Round(nTotPGrav,2), "99999999.99")) + '"'
    (PRE) _aTotal[002] += ' TotalExento="' + Alltrim(Transform(Round(nTotPExen,2), "99999999.99")) + '"'
    (PRE) _aTotal[002] += '>'
    (PRE) _aTotal[002] := ENCODEUTF8(_aTotal[002])
    (PREREG) _aTotal[002]

    [SRVPD PERCEPCION]
    (PRE) SRVPD->(DbGotop())
    (PREREG) ( Iif ((Alltrim(SRVPD->RV_TIPO) =="1"),.T.,.F.))
    (PREREG) NodOpcion(1)
    (PREREG) NodOpcion(2)
    (PREREG) (_aTotal[002] := '            <nomina12:Percepcion',.T.)
    (PREREG) (_aTotal[002] += ' TipoPercepcion="' + Alltrim(Substr(SRVPD->RV_TIPSAT,1,3)) + '"',.T.)
    (PREREG) (_aTotal[002] += ' Clave="' + Alltrim(SRVPD->RV_COD) + '"',.T.)
    (PREREG) (_aTotal[002] += ' Concepto="' + Alltrim(SRVPD->RV_DESCDET) + '"',.T.)
    (PREREG) (_aTotal[002] += ' ImporteGravado="' + Alltrim(Transform(Round(SRVPD->RC_VALORGV,2), "99999999.99")) + '"',.T.)
    (PREREG) (_aTotal[002] += ' ImporteExento="' + Alltrim(Transform(Round(SRVPD->RC_VALOREX,2), "99999999.99")) + '"',.T.)
    (PREREG) (_aTotal[002] += IIf(cNodoAccT <> "" .Or. cNodoHExt <> "", '>', '/>'),.T.)
    (PREREG) (_aTotal[002] += IIf(cNodoAccT == "", "", cCRLF + cNodoAccT),.T.)
    (PREREG) (_aTotal[002] += IIf(cNodoHExt == "", "", cCRLF + cNodoHExt),.T.)
    (PREREG) ENCODEUTF8(_aTotal[002])
    (PREREG) ( Iif ((cNodoAccT <> "" .Or. cNodoHExt <> ""),.T.,.F.))
    PERCEPCION C 036 0 ENCODEUTF8(XMLConv("",,,"nomina12:Percepcion",.F.,.T.,12))

    [SRVPD JUBILACION]
    (PREREG) Iif((nTotUnaEx+nTotParci+nTotDiari+nTotIAcum+NTotNAcum<>0),.T.,.F. )
    (PRE) _aTotal[002] := '                <nomina12:JubilacionPensionRetiro'
    (PRE) _aTotal[002] += IIf(nTotUnaEx <> 0, ' TotalUnaExhibicion="' + Alltrim(Transform(Round(nTotUnaEx,2), "99999999.99")) + '"', "")
    (PRE) _aTotal[002] += IIf(nTotParci <> 0, ' TotalParcialidad="' + Alltrim(Transform(Round(nTotParci,2), "99999999.99")) + '"', "")
    (PRE) _aTotal[002] += IIf(nTotParci <> 0, ' MontoDiario="' + Alltrim(Transform(Round(nTotDiari,2), "99999999.99")) + '"', "")
    (PRE) _aTotal[002] += IIf(nTotUnaEx+nTotParci <> 0, ' IngresoAcumulable="' + Alltrim(Transform(Round(nTotIAcum,2), "99999999.99")) + '"', "")
    (PRE) _aTotal[002] += IIf(nTotUnaEx+nTotParci <> 0, ' IngresoNoAcumulable="' + Alltrim(Transform(Round(NTotNAcum,2), "99999999.99")) + '"', "")
    (PRE) _aTotal[002] += '/>'
    (PREREG) ENCODEUTF8(_aTotal[002])
    (PREREG) VldNodJub()

    [SRVPD INDEMNIZACION]
    (PREREG) Iif((nTotPagad+nNumAnios+nUltSuelM+nIngrAcum+nIngrNAcu<>0),.T.,.F. )
    (PRE) _aTotal[002] := '                <nomina12:SeparacionIndemnizacion'
    (PRE) _aTotal[002] += ' TotalPagado="' + Alltrim(Transform(Round(nTotPagad,2), "99999999.99")) + '"'
    (PRE) _aTotal[002] += ' NumA osServicio="' + Alltrim(Str(IIf(nNumAnios==0, 1, nNumAnios))) + '"'
    (PRE) _aTotal[002] += ' UltimoSueldoMensOrd="' + Alltrim(Transform(Round(nUltSuelM,2), "99999999.99")) + '"'
    (PRE) _aTotal[002] += ' IngresoAcumulable="' + Alltrim(Transform(Round(nIngrAcum,2), "99999999.99")) + '"'
    (PRE) _aTotal[002] += ' IngresoNoAcumulable="' + Alltrim(Transform(Round(nIngrNAcu,2), "99999999.99")) + '"'
    (PRE) _aTotal[002] += '/>'
    (PREREG) ENCODEUTF8(_aTotal[002])
    (PREREG) VldNodInde()

    [XXX PERCEPCION] 
    (PRE) SRVPD->(DbGotop())
    (PREREG) ( Iif ((Alltrim(SRVPD->RV_TIPO) =="1"),.T.,.F.))
    PERCEPCION C 032 0 ENCODEUTF8(XMLConv("",,,"nomina12:Percepciones",.F.,.T.,8))

    //COMPLEMENTO:  NOMINA:DEDUCCIONES
    [XXX DEDUCCIONS]
    (PRE) DBSELECTAREA("SRVPD")
    (PRE) SRVPD->(DbGotop()) 
    (PRE) DbSeek(_aTotal[072]+_aTotal[073]+"2") 
    (PREREG) ( Iif ((Alltrim(SRVPD->RV_TIPO) =="2"),.T.,.F.))
    (PRE) _aTotal[002] := '        <nomina12:Deducciones'
    (PRE) _aTotal[002] += IIf(nOtroDedu <> 0, ' TotalOtrasDeducciones="' + Alltrim(Transform(Round(nOtroDedu,2), "99999999.99")) + '"', "")
    (PRE) _aTotal[002] += IIf(nImpReten <> 0, ' TotalImpuestosRetenidos="' + Alltrim(Transform(Round(nImpReten,2), "99999999.99")) + '" ', "")
    (PRE) _aTotal[002] += '>'
    (PREREG) ENCODEUTF8(_aTotal[002])

    [SRVPD DEDUCCION]  
    (PREREG) ( Iif ((Alltrim(SRVPD->RV_TIPO) =="2"),.T.,.F.))
    (PREREG) (_aTotal[002] := '            <nomina12:Deduccion',.T.)
    (PREREG) (_aTotal[002] += ' TipoDeduccion="' + Alltrim(Substr(SRVPD->RV_TIPSAT,1,3)) + '"',.T.)
    (PREREG) (_aTotal[002] += ' Clave="' + Alltrim(SRVPD->RV_COD) + '"',.T.)
    (PREREG) (_aTotal[002] += ' Concepto="' + Alltrim(SRVPD->RV_DESCDET) + '"',.T.)
    (PREREG) (_aTotal[002] += ' Importe="' + Alltrim(Transform(Round(SRVPD->RC_VALORGV + SRVPD->RC_VALOREX,2), "99999999.99")) + '"',.T.)
    (PREREG) (_aTotal[002] += '/>',.T.)
    (PREREG) ENCODEUTF8(_aTotal[002])

    [XXX DEDUCCIONS] 
    (PRE) DBSELECTAREA("SRVPD")
    (PRE) SRVPD->(DbGotop()) 
    (PRE) DbSeek(_aTotal[072]+_aTotal[073]+"2")  
    (PREREG) ( Iif ((Alltrim(SRVPD->RV_TIPO) =="2"),.T.,.F.))
    DEDUCCIONS C 032 0 ENCODEUTF8(XMLConv("",,,"nomina12:Deducciones",.F.,.T.,8))

    //COMPLEMENTO:  NOMINA:OTROSPAGOS
    [XXX OTROSPAGOS]

    //Variable utilizada para validar si es Regimen Asimilado
    (PRE) lRegAsimil := SRA->RA_TIPREG $ "05|06|07|08|09|10|11"

    (PREREG) !lRegAsimil
    (PREREG) _aTotal[002] := ''
    (PREREG) _aTotal[002] := fOtrosPag()
    (PREREG) ENCODEUTF8(_aTotal[002])

    [XXX INCAPACIDS] 
    (PRE) SRCIN->(DbGotop()) 
    (PREREG) Iif(!SRCIN->(Eof()),.T.,.F. )
    (PRE) _aTotal[001] := '        <nomina12:Incapacidades>'
    (PREREG) ENCODEUTF8(_aTotal[001])

    //COMPLEMENTO:  NOMINA:INCAPACIDAD
    [SRCIN INCAPACIDAD]
    (PRE) SRCIN->(DbGotop())
    (PREREG) (_aTotal[002] := '            <nomina12:Incapacidad',.T.)
    (PREREG) (_aTotal[002] += ' DiasIncapacidad="' + Alltrim(Str(SRCIN->RC_HORAS)) + '"',.T.)
    (PREREG) (_aTotal[002] += ' TipoIncapacidad="' + Alltrim(SRCIN->RCM_TIPSAT) + '"',.T.)
    (PREREG) (_aTotal[002] += ' ImporteMonetario="' + Alltrim(Transform(Round(SRCIN->RC_VALOR,2), "99999999.99")) + '"',.T.)
    (PREREG) (_aTotal[002] += '/>',.T.)
    (PREREG) ENCODEUTF8(_aTotal[002])

    [XXX INCAPACIDAD]  
    (PRE) SRCIN->(DbGotop()) 
    (PREREG) Iif(!SRCIN->(Eof()),.T.,.F. )
    INCAPACIDAD C 030 0 ENCODEUTF8(XMLConv("",,,"nomina12:Incapacidad",.F.,.T.,8))

    [XXX INCAPACIDS] 
    (PRE) SRCIN->(DbGotop()) 
    (PREREG) Iif(!SRCIN->(Eof()),.T.,.F. )
    INCAPACIDS C 033 0 ENCODEUTF8(XMLConv("",,,"nomina12:Incapacidades",.F.,.T.,8))

    [XXX NOMINA]  
    NOMINA     C 023 0 ENCODEUTF8(XMLConv("",,,"nomina12:Nomina",.F.,.T.,4))

    //COMPLEMENTO:  CFDI:COMPLEMENTO
    [XXX COMPLEM]  
    COMPLEM    C 023 0 ENCODEUTF8(XMLConv("",,,"cfdi:Complemento",.F.,.T.,4))  

    [XXX ADDENDA]
    ADDENDA    C 019 0 ENCODEUTF8(XMLConv("",,,"cfdi:Addenda",.T.,.F.,4))

    [XXX ADDENDA1]
    (PREREG) (_aTotal[003] := '        <cfdi:t_obs',.T.)
    (PREREG) (_aTotal[003] += ' CadenaOrig="' + Alltrim(_aTotal[074]) + '"',.T.)
    (PREREG) (_aTotal[003] += ' Sucursal="' + SRA->RA_FILIAL + '"',.T.)
    (PREREG) (_aTotal[003] += '/>',.T.)
    (PREREG) _aTotal[003]
    (POS) DelATbr884()

    [XXX ADDENDA]
    ADDENDA    C 019 0 ENCODEUTF8(XMLConv("",,,"cfdi:Addenda",.F.,.T.,4))

    [XXX CFDI]
    CFDI       C 019 0 ENCODEUTF8(XMLConv("",,,"cfdi:Comprobante",.F.,.T.,0))
     

 

¿Fue útil este artículo?
Usuarios a los que les pareció útil: 0 de 0

0 Comentarios

Inicie sesión para dejar un comentario.
X Fechar

Olá ,

Há pendência referente a um de seus produtos contratados para a empresa ().

Entre em contato com o Centro de Serviços TOTVS para tratativa.

Ligue! 4003-0015 opção 4 e 9 ou registre uma solicitação para CST – Cobrança – Verificação de pendências financeiras . clique aqui.

TOTVS

X Fechar

Olá ,

Seu contato não está cadastrado no Portal do Cliente como um perfil autorizado a solicitar consultoria telefônica.

Por gentileza, acione o administrador do Portal de sua empresa para: (1)configurar o seu acesso ou (2)buscar um perfil autorizado para registro desse atendimento.

Em caso de dúvidas sobre a identificação do contato administrador do Portal, ligue (11) 4003-0015, opção 7 e, em seguida, opção 4 para buscar o suporte com o time de Assessoria ao Portal do Cliente. . clique aqui.

TOTVS

X Fechar

Olá ,

Para o atendimento de "Consultoria Telefônica" você deverá estar de acordo com o Faturamento.

TOTVS

X Fechar

Olá,

Algo inesperado ocorreu, e o usuario nao foi reconhecido ou você nao se encontra logado

Por favor realize um novo login

Em caso de dúvidas, entre em contato com o administrador do Portal de Clientes de sua empresa para verificação do seu usuário, ou Centro de Serviços TOTVS.

Ligue! 4003-0015 opção 4 e 9 ou registre uma solicitação para CST – Cadastros . clique aqui.

TOTVS

Chat _

Rellene los campos siguientes para iniciar el chat:

Chat _