Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Producto

Solucoes_espanhol
SolucaoTOTVS Backoffice

Línea de producto: 

Linhas_totvs_espanhol
LinhaLínea Protheus

Segmento:

Segmentos_totvs_espanhol
SegmentoBackoffice

Módulo:SIGAFAT- Facturación
Función:
RutinaNombre TécnicoFecha
LOCXFUNAFunciones genéricas de localizaciones
23
24/09/2023
FATSMEX.PRWGeneración de XML para Documentos de Salida
23
24/09/2023
FATEMEX.PRWGeneración de XML para Documentos de Entrada
23
24/09/2023
País:México (MEX)
Ticket:No aplica
Requisito/Story/Issue (informe el requisito vinculado):DMINA-20950

...

Se realizó ajuste para que el Punto de Entrada LOCXCONCEP, permita:

  • En el nodo cfdi:Comprobante\cfdi:Conceptos\cfdi:Concepto, personalizar el valor del atributo ValorUnitario con la pósición 7 del arreglo retornado por el Punto de Entrada (el retorno debe ser de tipo CaracterCarácter).
  • En el nodo cfdi:Comprobante\cfdi:Conceptos\cfdi:Concepto, personalizar el valor del atributo Importe con la posición 8 del arreglo retornado por el Punto de Entrada (el retorno debe ser de tipo CaracterCarácter).
  • En el nodo cfdi:Comprobante\cfdi:Conceptos\cfdi:Concepto, personalizar el valor del atributo Descuento con la posición 9 del arreglo retornado por el Punto de Entrada (el retorno debe ser de tipo CaracterCarácter).

Se activó el Punto de Entrada PECOMPCON PEDETIMP, el cual permite:

  • Modificar en el nodo cfdi:Comprobante\cfdi:Conceptos\cfdi:Concepto el nodo cfdi:Impuestos por ítem.

  • Personalizar el nodo cfdi:InformacionAduanera
  • Personalizar el nodo cfdi:cfdi:CuentaPredial
  • Informações
    titleInformación

    El punto de Entrada PECOMPCONPEDETIMP, recibe 2 4 parámetros, donde:

    El primer parámetro es de tipo caracter carácter, con las opciones IA para personalizar el nodo de Información Aduanera, CP para personalizar el nodo de Cuenta Predial, IT para personalizar el nodo cfdi:Impuestos para Impuestos de Traslados e IR para personalizar el nodo cfdi:Impuestos para Impuestos de Retenciones.

    El segundo parámetro recibe el valor lógico .T. o .F., que indica si se va a generar la Cadena Original o el XML (.T. es igual a generar la Cadena Original y .F. es igual a No).

...

  • generar el XML).

    El tercer parámetro corresponde del código del Producto.

    El cuarto parámetro corresponde del número del ítem.

    El retorno debe ser un arreglo con valores de tipo carácter.

Se activó el Punto de Entrada PEXMLDOC PECOMPCON, el cual permite:

  • Personalizar el valor del atributo SubTotal.nodo cfdi:InformacionAduanera
  • Personalizar el valor del atributo Total.Personalizar el nodo cfdi:Impuestos que corresponde a los Impuestos Totales del Documentos.nodo cfdi:cfdi:CuentaPredial


    Informações
    titleInformación

    El punto de Entrada PEXMLDOC PECOMPCON, recibe 2 parámetros, donde:

    El primer parámetro es de tipo caracter carácter, con las opciones ST IA para personalizar el valor del atributo SubTotal, T personalizar el valor del atributo Total y TI nodo de Información Aduanera y CP para personalizar el nodo cfdi:Impuestos de los impuestos totales del documento.de Cuenta Predial

    El segundo parámetro recibe el valor lógico .T. o .F., que indica si se va a generar la Cadena Original o el XML (.T. es igual a generar la Cadena Original y .F. es igual a No, y este parámetro no debe aplicar para las opciones ST y T).

    Aviso
    titleIMPORTANTE

    La presente funcionalidad se encuentra en fase de desarrollo, y no ha sido liberada de manera oficial, por lo cual, se recomienda seguir utilizando la funcionalidad del uso del archivo FATSMEX.INI, para lo cual el parámetro MV_FEXML no debe existir o estar vacío.

    generar el XML)

    El retorno debe ser un valor de tipo carácter.

En la rutinas de Generación de XML para Documentos de Salida (FATSMEX.PRW) y Generación de XML para Documentos de Entrada (FATEMEX.PRW):

Se activó el Punto de Entrada PEXMLDOC, el cual permite:

  • En el nodo cfdi:Comprobante, permitir personalizar los atributos:
    • Total
    • Subtotal
    • Fecha
    • Descuento
    • TipoCambio
    • LugarExpedicion
    • Moneda
    • FormaPago
    • MetodoPago
  • Personalizar el nodo cfdi:Conceptos.
  • Personalizar el nodo cfdi:Impuestos que corresponde a los Impuestos Totales del Documentos.


Informações
titleInformación

El punto de Entrada PEXMLDOC,recibe 2 parámetros, donde:

El primer parámetro es de tipo caracter, con las siguientes opciones:

  • ST para personalizar el valor del atributo SubTotal,
  • T personalizar el valor del atributo Total
  • FE personalizar el valor del atributo Fecha
  • D personalizar el valor atributo Descuento
  • TC personalizar el valor del atributo TipoCambio
  • LE personalizar el valor de atributo LugarExpedicion
  • MO personalizar el valor del atributo Moneda
  • FP personalizar el valor del atributo FormaPago
  • MP personalizar el valor del atributo MetodoPago
  • TI para personalizar el nodo cfdi:Impuestos de los impuestos totales del documento.
  • CO para personalizar el nodo cfdi:Conceptos 

El segundo parámetro recibe el valor lógico .T. o .F., que indica si se va a generar la Cadena Original o el XML (.T. es igual a generar la Cadena Original y .F. es igual a generar el XML, y este parámetro no aplica para las opciones ST - Subtotal y T - Total).

El retorno debe ser un valor de tipo carácter.

  • Realizar un respaldo del repositorio del ambiente (archivo RPO).
  • Aplicar el parche correspondiente al issue DMINA-20950.
  • Validar que las rutinas incluidas en el parche coincidan con las mencionadas en la sección "Función" del encabezado del presente Documento Técnico, así como las fechas.
  • Configurar el parámetro MV_FEXML, para más información de la configuración del parámetro ver la sección 04. INFORMACIÓN ADICIONAL.
  • Configurar el parámetro MV_CFDDIRS con la ruta donde se encuentran las llaves y certificados.
  • Configurar el parámetro MV_CFDI_CP con el nombre y extensión del Archivo de la clave privada (.pem).
  • Configurar los parámetros MV_IVATRAS y MV_RETIVAM con los códigos de Impuestos y Retenciones.
  • Ingresar al módulo Libros Fiscales (SIGAFIS), ir al menú Actualizaciones | Archivos | Contr. Formularios (MATA992)
    • Configurar los datos para la Serie de la Factura informando los campos No. Inicial, No. Final, Fch Validez y Certificado.
      Image Removed
  • Ingresar al módulo Facturación (SIGAFAT), ir al menú Actualizaciones | Archivos | Tipos de Entrada y Salida (MATA080)
    • Configurar el Tipo de Salida (TES), para el cálculo de Impuestos de la Factura de Salida (NF).
  • Ingresar al módulo Facturación (SIGAFAT), ir al menú Actualizaciones | Archivos | Productos (MATA010)
    • Configurar el o los Productos, para la generación de la Factura de Salida (NF).
  • Ingresar al módulo Facturación (SIGAFAT), ir al menú Actualizaciones | Archivos | Clientes.

    Configurar el Cliente, para la generación de la Factura de Salida (NF).

    En la ruta configurada en el parámetro MV_CFDDIRS debe existir el archivo que se configuró en el parámetro MV_CFDI_CP, ya que con este archivo es generado el atributo Certificado en el XML del CFDI

    .

    Aviso
    titleIMPORTANTE

    La presente funcionalidad se encuentra en fase de desarrollo, y no ha sido liberada de manera oficial, por lo cual, se recomienda seguir utilizando la funcionalidad del uso de los archivos FATSMEX.INI y FATEMEX.ini, para lo cual el parámetro MV_FEXML no debe existir o estar vacío.

    Para los Puntos de Entrada PECOMPCON, PEXMLDOC, PEDETIMP y LOCXCONCEP se tiene acceso a las tablas SF1 - Encabezado de Fact. de Entrada y SF2 - Encabezado de Fact. de Salida

    Totvs custom tabs box
    tabsPre-condiciones, Timbrado NF, Timbrado NCC, Paso 04
    idspaso1,paso2, paso3
    Totvs custom tabs box items
    defaultyes
    referenciapaso1
    Aviso
    titleIMPORTANTE
    -items
    Totvs custom tabs box
    tabsPre-condiciones, Timbrado NF, Timbrado NCC, Paso 04
    idspaso1,paso2, paso3
    paso3
    Totvs custom tabs box items
    defaultyes
    referenciapaso1
    1. Realizar un respaldo del repositorio del ambiente (archivo RPO).
    2. Aplicar el parche correspondiente al issue DMINA-20950.
    3. Validar que las rutinas incluidas en el parche coincidan con las mencionadas en la sección "Función" del encabezado del presente Documento Técnico, así como las fechas.
    4. Configurar el parámetro MV_FEXML, con el valor igual a "S".
    5. Configurar el parámetro MV_CFDDIRS con la ruta donde se encuentran las llaves y certificados.
    6. Configurar el parámetro MV_CFDI_CP con el nombre y extensión del Archivo de la clave privada (.pem).
    7. Configurar los parámetros MV_IVATRAS y MV_RETIVAM con los códigos de Impuestos y Retenciones.
    8. Ingresar al módulo Libros Fiscales (SIGAFIS), ir al menú Actualizaciones | Archivos | Contr. Formularios (MATA992)
      • Configurar los datos para la Serie de la Factura informando los campos No. Inicial, No. Final, Fch Validez y Certificado.
        Image Added
    defaultno
    referenciapaso2
    1. Ingresar al módulo Facturación (SIGAFAT), ir al menú "Actualizaciones | Facturación | Facturaciones (MATA467N)
    2. Indicar los parámetros de la rutina, informando la pregunta ¿Normal/Benef./Anticipo? con la opción Normal.
    3. Incluir una Factura de Venta (NF):
      • Informar los datos del Encabezado de la Factura de Venta.
      • Informar los datos de los ítems de la Factura de Venta.
    4. Confirmar el grabado de la Factura de Venta.
    5. Confirmar la generación y timbrado exitoso del Comprobante Fiscal Digita para Internet (Ésta confirmación puede presentarse o no de acuerdo a la configuración del parámetro MV_CFDUSO).
    6. Validar que el XML contenga la información de acuerdo a lo personalizado por los Puntos de Entrada PECOMPCON, PEXMLDOC y LOCXCONCEP.
    Totvs custom tabs box items
    defaultno
    referencia
    1. Ingresar al módulo Facturación (SIGAFAT), ir al menú " Actualizaciones | Facturación Archivos | Generac. de Notas de Crédito y Débito (MATA465N)Incluir una Nota de Crédito de Cliente:Tipos de Entrada y Salida (MATA080)
      • Configurar el Tipo de Salida (TES), para el cálculo de 
      • Informar los datos del EncabezadoImpuestos de la Nota de Crédito de Cliente (NCCFactura de Salida (NF).
      • Informar los datos de los ítems de la  Nota de Crédito de Cliente (NCC).
    2. Confirmar el grabado de la  Nota de Crédito de Cliente (NCC).
    3. Confirmar la generación y timbrado exitoso del Comprobante Fiscal Digital para Internet (Ésta confirmación puede presentarse o no de acuerdo a la configuración del parámetro MV_CFDUSO).
    4. Validar que el XML contenga la información de acuerdo a lo personalizado por los Puntos de Entrada PECOMPCON, PEXMLDOC y LOCXCONCEP.

    04. INFORMACIÓN ADICIONAL

    Ejemplos de los Puntos de Entrada:

    1. Ingresar al módulo Facturación (SIGAFAT), ir al menú Actualizaciones | Archivos | Productos (MATA010)
      • Configurar el o los Productos, para la generación de la Factura de Salida (NF).
    2. Ingresar al módulo Facturación (SIGAFAT), ir al menú Actualizaciones | Archivos | Clientes.
      • Configurar el Cliente, para la generación de la Factura de Salida (NF).

        Aviso
        titleIMPORTANTE

        En la ruta configurada en el parámetro MV_CFDDIRS debe existir el archivo que se configuró en el parámetro MV_CFDI_CP, ya que con este archivo es generado el atributo Certificado en el XML del CFDI.

    Totvs custom tabs box items
    defaultno
    referenciapaso2
    1. Ingresar al módulo Facturación (SIGAFAT), ir al menú "Actualizaciones | Facturación | Facturaciones (MATA467N)
    2. Indicar los parámetros de la rutina, informando la pregunta ¿Normal/Benef./Anticipo? con la opción Normal.
    3. Incluir una Factura de Venta (NF):
      • Informar los datos del Encabezado de la Factura de Venta.
      • Informar los datos de los ítems de la Factura de Venta.
    4. Confirmar el grabado de la Factura de Venta.
    5. Confirmar la generación y timbrado exitoso del Comprobante Fiscal Digita para Internet (Ésta confirmación puede presentarse o no de acuerdo a la configuración del parámetro MV_CFDUSO).
    6. Validar que el XML contenga la información de acuerdo a lo personalizado por los Puntos de Entrada PECOMPCON, PEXMLDOC y LOCXCONCEP.
    Totvs custom tabs box items
    defaultno
    referenciapaso3
    1. Ingresar al módulo Facturación (SIGAFAT), ir al menú "Actualizaciones | Facturación | Generac. de Notas de Crédito y Débito (MATA465N)
    2. Incluir una Nota de Crédito de Cliente:
      • Informar los datos del Encabezado de la Nota de Crédito de Cliente (NCC).
      • Informar los datos de los ítems de la  Nota de Crédito de Cliente (NCC).
    3. Confirmar el grabado de la  Nota de Crédito de Cliente (NCC).
    4. Confirmar la generación y timbrado exitoso del Comprobante Fiscal Digital para Internet (Ésta confirmación puede presentarse o no de acuerdo a la configuración del parámetro MV_CFDUSO).
    5. Validar que el XML contenga la información de acuerdo a lo personalizado por los Puntos de Entrada PECOMPCON, PEXMLDOC y LOCXCONCEP.


    04. INFORMACIÓN ADICIONAL

    Ejemplos de los Puntos de Entrada:

    Bloco de código
    titlePECOMPCON
    linenumberstrue
    #include 'protheus.ch'
    #INCLUDE "FWMVCDEF.CH"
    #include "FILEIO.CH"
    
    User Function PECOMPCON()
    	Local cXMLCon   := ""
    	Local cCRLF  := (chr(13)+chr(10))
    	Local cOpc   := PARAMIXB[1] //Opción donde IA - Información Aduanera, CP - Cuenta Predial
    	Local lCadO  := PARAMIXB[2] //Indica si es Cadena Original .T. = Si y .F. = No
    	Local cSepa  := "|"
    	Local cNPed  := "23  47  3807  8003832"
    	Local cCtaP  := "15956011002"
    
    	If Alltrim(cEspecie) $ "NF|NCC"
    		If lCadO
    			If cOpc == "IA" //Información Aduanera
    				cXMLCon := StrTran(cNPed,"  "," ") + cSepa
    			ElseIf cOpc == "CP" //Cuenta Predial
    				cXMLCon := cCtaP + cSepa
    			EndIf
    		Else
    			If cOpc == "IA" //Información Aduanera
    				cXMLCon := Space(12) + '<cfdi:InformacionAduanera NumeroPedimento="' + cNPed + '"/>' + cCRLF
    			ElseIf cOpc == "CP" //Cuenta Predial
    				cXMLCon := Space(12) + '<cfdi:CuentaPredial Numero="' + cCtaP + '"/>' + cCRLF
    			EndIf
    		EndIf
    	EndIf
    Return cXMLCon
    Bloco de código
    titlePEXMLDOC
    linenumberstrue
    #include 'protheus.ch'
    #INCLUDE "FWMVCDEF.CH"
    #include "FILEIO.CH"
     
    User Function PEXMLDOC()
        Local cOpc    := PARAMIXB[1] //Opción para indicar el atributo o el nodo a personalizar
        Local lCadO   := PARAMIXB[2] //Indica si es Cadena Original .T. = Si y .F. = No
        Local cXMLRet := ""
        Local cSepa   := "|"
        Local cSubT   := "0.01"
        Local cTot    := "0.01"
        Local cCRLF   := (chr(13)+chr(10))
     
        //Datos Impuestos Totales
        Local cTotIT := "0.00"
        Local cBasIT := "0.01"
        Local cImpT  := "002"
        Local cTpFac := "Tasa"
        Local cTasCuo := "0.000000"
        Local cValor  := "0.00"
     
        If Alltrim(cEspecie) $ "NF|NCC"
            If cOpc == "ST" //SubTotal
                cXMLRet := cSubT
            ElseIf cOpc == "T" //Total
                cXMLRet := cTot
            ElseIf cOpc == "D" //Descuento
                cXMLRet := "20.00"
            ElseIf cOpc == "FE" //Fecha de emisión
                cXMLRet := ""
            ElseIf cOpc == "FP" // FormaPago
                cXMLRet := ""
            ElseIf cOpc == "MO" // Moneda
                cXMLRet := ""
            EndIf      
     
            If lCadO
                If cOpc == "CO"
                    cXMLRet := U_GROUPCAD(SF2->F2_DOC)
                elseIf cOpc == "TI" //Total de Impuestos
                    cXMLRet := cBasIT + cSepa + cImpT + cSepa + cTpFac + cSepa + cTasCuo + cSepa + cValor + cSepa + cTotIT + cSepa
                EndIf
            Else
                If cOpc == "CO"
                    cXMLRet := space(3) + '<cfdi:Conceptos>' + cCRLF
                    cXMLRet += U_GROUPPED(SF2->F2_DOC)  
                    cXMLRet += space(3) + '</cfdi:Conceptos>' + cCRLF
                elseIf cOpc == "TI" ////Total de Impuestos
                    cXMLRet := cCRLF + Space(5) + '<cfdi:Impuestos TotalImpuestosTrasladados="' + cTotIT + '" >' + cCRLF
                    cXMLRet += Space(10) + '<cfdi:Traslados>' + cCRLF
                    cXMLRet += Space(15
    Bloco de código
    titlePECOMPCON
    linenumberstrue
    #include 'protheus.ch'
    #INCLUDE "FWMVCDEF.CH"
    #include "FILEIO.CH"
    
    User Function PECOMPCON()
    	Local cXMLCon   := ""
    	Local cCRLF  := (chr(13)+chr(10))
    	Local cOpc   := PARAMIXB[1] //Opión donde IA - Información Aduanera, CP - Cuenta Predial
    	Local lCadO  := PARAMIXB[2] //Indica si es Cadena Origian .T. = Si y .F. = No
    	Local cSepa  := "|"
    	Local cNPed  := "23  47  3807  8003832"
    	Local cCtaP  := "15956011002"
    	Local cBaseI := "0.01"
    	Local cImpto := "002"
    	Local cTipoF := "Tasa"
    	Local cTsaC  := "0.000000"
    	Local cImpI  := "0.00"
    
    	If Alltrim(cEspecie) == "NF"
    		If lCadO
    			If cOpc == "IA" //Información Aduanera
    				cXMLCon := StrTran(cNPed,"  "," ") + cSepa
    			ElseIf cOpc == "CP" //Cuenta Predial
    				cXMLCon := cCtaP + cSepa
    			ElseIf cOpc == "IT" //Impuestos por ítem por PE (Traslado)
    				cXMLCon := cBaseI + cSepa + cImpto + cSepa + cTipoF + cSepa + cTsaC + cSepa + cImpI + cSepa
    			EndIf
    		Else
    			If cOpc == "IA" //Información Aduanera
    				cXMLCon := Space(12) + '<cfdi:InformacionAduanera NumeroPedimento="' + cNPed + '"/>' + cCRLF
    			ElseIf cOpc == "CP" //Cuenta Predial
    				cXMLCon := Space(12) + '<cfdi:CuentaPredial Numero="' + cCtaP + '"/>' + cCRLF
    			ElseIf cOpc == "ST" //SubTotal
    				cXMLCon := Space(1) + 'SubTotal="' + cSubT + '"'
    			ElseIf cOpc == "T" //Total
    				cXMLCon := Space(1) + 'Total="' + cTot + '"'
    			ElseIf cOpc == "IT" //Impuestos por ítem por PE (Traslado)
    				cXMLCon += Space(20) + '<cfdi:Traslado Base="' + cBaseIcBasIT + '" Impuesto="' + cImptocImpT + '" TipoFactor="' + cTipoFcTpFac + '" TasaOCuota="' + cTsaCcTasCuo + '" Importe="' + cImpI + '"/>' + cCRLF
    			EndIf
    		EndIf
    	EndIf
    Return cXMLCon
    Bloco de código
    titlePEXMLDOC
    linenumberstrue
    #include 'protheus.ch'
    #INCLUDE "FWMVCDEF.CH"
    #include "FILEIO.CH"
    
    User Function PEXMLDOC()
    	Local cOpc    := PARAMIXB[1] //Opión donde IA - Información Aduanera, CP - Cuenta Predial
    	Local lCadO   := PARAMIXB[2] //Indica si es Cadena Origian .T. = Si y .F. = No
    	Local cXMLRet := ""
    	Local cSepa   := "|"
    	Local cSubT   := "0.01"
    	Local cTot    := "0.01"
    	Local cCRLF   := (chr(13)+chr(10))
    
    	//Datos Impuestos Totales
    	Local cTotIT := "0.00"
    	Local cBasIT := "0.01"
    	Local cImpT  := "002"
    	Local cTpFac := "Tasa"
    	Local cTasCuo := "0.000000"
    	Local cValor  := "0.00"
    
    	If Alltrim(cEspecie) == "NF"
    		If lCadO
    			If cOpc == "ST" //SubTotal
    				cXMLRet := cSubT + cSepa
    			ElseIf cOpc == "T" //Total
    				cXMLRet := cTot + cSepa
    			ElseIf cOpc == "TI" //Total de Impuestos
    				cXMLRet := cBasIT + cSepa + cImpT + cSepa + cTpFac + cSepa + cTasCuo + cSepa + cValor + cSepa + cTotIT + cSepa
    			EndIf
    		Else
    			If cOpc == "ST" //SubTotal
    				cXMLRet := Space(1) + 'SubTotal="' + cSubT + '"'
    			ElseIf cOpc == "T" //Total
    				cXMLRet := Space(1) + 'Total="' + cTot + '"'
    			ElseIf cOpc == "TI" ////Total de Impuestos
    				cXMLRet := cCRLF + Space(5) + '<cfdi:Impuestos TotalImpuestosTrasladados="' + cTotIT + '" >' + cCRLF
    				cXMLRet += Space(10) + '<cfdi:Traslados>' + cCRLF
    				cXMLRet += Space(15) + '<cfdi:Traslado Base="' + cBasIT + '" Impuesto="' + cImpT + '" TipoFactor="' + cTpFac + '" TasaOCuota="' + cTasCuo + '" Importe="' + cValor + '"/>' + cCRLF
    				cXMLRet += Space(10) + '</cfdi:Traslados>' + cCRLF
        			cXMLRet += Space(5) + '</cfdi:Impuestos>' + cCRLF
    			EndIf
    		EndIf
    	EndIf
    Return cXMLRet
    cValor + '"/>' + cCRLF
                    cXMLRet += Space(10) + '</cfdi:Traslados>' + cCRLF
                    cXMLRet += Space(5) + '</cfdi:Impuestos>' + cCRLF
                EndIf
            EndIf
        EndIf
    Return cXMLRet
    Bloco de código
    titleLOCXCONCEP
    linenumberstrue
    #include 'protheus.ch'
    #INCLUDE "FWMVCDEF.CH"
    #include "FILEIO.CH"  
    
    User function LOCXCONCEP()
    	Local cArea := GetArea()
        Local cCodProd := PARAMIXB[1] // Código del producto.
        Local cItem := PARAMIXB[2] // Número Item  
        Local aDetFac := {"","",0,"","","","","",""} // Arreglo que contiene la información del producto.
    
    	/*
    	aDetFac[1] := ClaveProdSer
    	aDetFac[2] := No. Identificación
    	aDetFac[3] := Cantidad
    	aDetFac[4] := ClaveUnidad
    	aDetFac[5] := Unidad
    	aDetFac[6] := Descripcion
    	aDetFac[7] := ValorUnitario
    	aDetFac[8] := Importe
    	aDetFac[9] := Descuento
    	*/
    
    	If Alltrim(cEspecie) $ "NF|NCC"
    		aDetFac[7] := "0.01"
    		aDetFac[8] := "0.01"
    		aDetFac[9] := "0.00"
    	EndIf
    
    	RestArea(cArea)
    Return aDetFac
    Bloco de código
    titlePEDETIMP
    linenumberstrue
    #include 'protheus.ch'
    #INCLUDE "FWMVCDEF.CH"
    #include "FILEIO.CH"
    
    User Function PEDETIMP()
    	Local cOpc   := PARAMIXB[1] //Opción donde IA - Información Aduanera, CP - Cuenta Predial
    	Local lCadO  := PARAMIXB[2] //Indica si es Cadena Original .T. = Si y .F. = No
    	Local cProd  := PARAMIXB[3] //Código del Producto
    	Local cItem  := PARAMIXB[4] //Número de ítem
    	Local aImpDet := {}
    	Local cRetImp := ""
    	Local cBaseI := "0.01"
    	Local cImpto := "002"
    	Local cTipoF := "Tasa"
    	Local cTsaC  := "0.000000"
    	Local cImpI  := "0.00"
    	Local cCRLF  := (chr(13)+chr(10))
    	Local cSepa  := "|"
    
    	If Alltrim(cEspecie) $ "NF|NCC"
    		If lCadO 
    			If cOpc == "IT"
    				cRetImp := cBaseI + cSepa + cImpto + cSepa + cTipoF + cSepa + cTsaC + cSepa + cImpI + cSepa
    			EndIf
    		Else
    			If cOpc == "IT"
    				cRetImp := Space(20) + '<cfdi:Traslado Base="' + cBaseI + '" Impuesto="' + cImpto + '" TipoFactor="' + cTipoF + '" TasaOCuota="' + cTsaC + '" Importe="' + cImpI + '"/>' + cCRLF
    			EndIf
    		EndIf
    		aAdd(aImpDet, cRetImp)
    	EndIf
    Return aImpDet
    Bloco de código
    titleLOCXCONCEP
    linenumberstrue
    #include 'protheus.ch'
    #INCLUDE "FWMVCDEF.CH"
    #include "FILEIO.CH"
    
    User function LOCXCONCEP()
    	Local cArea := GetArea()
    	Local aDetFac := {"","",0,"","","","","",""} // Arreglo que contiene la información del producto.
    	/*
    	aDetFac[1] := ClaveProdSer
    	aDetFac[2] := No. Identificación
    	aDetFac[3] := Cantidad
    	aDetFac[4] := ClaveUnidad
    	aDetFac[5] := Unidad
    	aDetFac[6] := Descripcion
    	aDetFac[7] := ValorUnitario
    	aDetFac[8] := Importe
    	aDetFac[9] := Descuento
    	*/
    
    	If Alltrim(cEspecie) == "NF"
    		aDetFac[7] := "0.01"
    		aDetFac[8] := "0.01"
    		aDetFac[9] := "0.00"
    	EndIf
    
    	RestArea(cArea)
    Return aDetFac



    Card documentos
    InformacaoLa presente solución aplica para versión 12.1.2210 o superior, y es necesario tener activa la funcionalidad de CFDI versión 4.0 o superior.
    Titulo¡IMPORTANTE!

    ...