Árvore de páginas

Versões comparadas

Chave

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

...

Informações
titleInformación

En el Punto de Entrada PEEMIREC, se tienen disponibles los siguientes datos:

La variable cEspecie, la cual puede ser utilizada para personalizar para que la funcionalidad aplique solo para ciertos documentos, ya que contiene la especie del documento  (por ejemplo NF para Factura de Venta, NDC para Nota de Débito de Cliente o NCC para Nota de Crédito de Cliente).

Posicionamiento del registro del Documento en la tabla SF1 - Encabezado de Fact. de Entrada para los documento de Entrada. 

Posicionamiento del registro del Documento en la tabla SF2 - Encabezado de Fact. de Salida para los documento de Salida.

En el Punto de Entrada PEEMIREC, se debe inicializar la variable de retorno de tipo arreglo, con 4 posiciones de tipo caracter vacías, por ejemplo: Local aEmiRec := {"","","",""} y solo actualizar la posición que sea personalizar en el nodo.

6.3 Activación de PE para modificar nodos Emisor y Receptor para XML de Documentos de Entrada y Salida con MV_FEXML activo

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 localizaciones23/09/2023
FATSMEX.PRWGeneración de XML para Documentos de Salida23/09/2023
FATEMEX.PRWGeneración de XML para Documentos de Entrada23/09/2023
País:México (MEX)
Ticket:No aplica
Requisito/Story/Issue (informe el requisito vinculado):DMINA-20950


SITUCIÓN:

Para la funcionalidad de generación del XML de los Comprobantes Fiscales Digitales por Internet (CFDI) a través de las rutinas de Generación de XML para Documentos de Salida (FATSMEX.PRW) y Generación de XML para Documentos de Entrada (FATEMEX.PRW) para el país México, es decir, cuando el parámetro MV_FEXML se encuentra configurado con el valor S, se solicita activar Puntos de Entrada, que permitan las siguientes acciones:

  • En el nodo cfdi:Comprobante\cfdi:Conceptos\cfdi:Concepto, permitir modificar los atributos ValorUnitario, Importe y Descuento.
  • En el nodo cfdi:Comprobante\cfdi:Conceptos\cfdi:Concepto, permitir modificar del nodo de cfdi:Impuestos por ítem.
  • En el nodo cfdi:Comprobante\cfdi:Conceptos, permitir personalizar la generación del nodo de cfdi:InformacionAduanera
  • En el nodo cfdi:Comprobante\cfdi:Conceptos, permitir personalizar la generación del nodo de cfdi:CuentaPredial.
  • En el nodo cfdi:Comprobante, permitir personalizar el nodo de cfdi:Impuestos (Impuestos Totales).

SOLUCIÓN:

En la rutina de Funciones Genéricas de Localizaciones (LOCXFUNA):

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 Caracter).
  • 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 Caracter).
  • 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 Caracter).

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

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

    Informações
    titleInformación

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

    El primer parámetro es de tipo caracter, con las opciones IT para personalizar el nodo cfdi:Impuestos para Impuestos de Traslados e IR para personalizar el nodo cfdi:Impuestos para Impuestos de Retenciones.

    El retorno debe ser un arreglo con valores de tipo caracter.

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

  • Personalizar el nodo cfdi:InformacionAduanera
  • Personalizar el nodo cfdi:cfdi:CuentaPredial


    Informações
    titleInformación

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

    El primer parámetro es de tipo caracter, con las opciones IA para personalizar el nodo de Información Aduanera y CP para personalizar el nodo 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 Sí y .F. es igual a No).

    El retorno debe ser un valor de tipo caracter.

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:

  • Personalizar el valor del atributo SubTotal.
  • Personalizar el valor del atributo Total.
  • 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 opciones ST para personalizar el valor del atributo SubTotal, T personalizar el valor del atributo Total y TI para personalizar el nodo cfdi:Impuestos de los impuestos totales del documento.

    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 Sí y .F. es igual a No, y este parámetro no debe aplicar para las opciones ST y T).

    El retorno debe ser un valor de tipo caracter.


    Ejemplos de los Puntos de Entrada:

    Bloco de código
    titlePECOMPCON
    #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"
    
    	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
    #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|NCC"
    		If cOpc == "ST" //SubTotal
    			cXMLRet := cSubT
    		ElseIf cOpc == "T" //Total
    			cXMLRet := cTot
    		ElseIf cOpc == "D" //Total
    			cXMLRet := "20.00"
    		EndIf
    
    		If lCadO
    			If cOpc == "TI" //Total de Impuestos
    				cXMLRet := cBasIT + cSepa + cImpT + cSepa + cTpFac + cSepa + cTasCuo + cSepa + cValor + cSepa + cTotIT + cSepa
    			EndIf
    		Else
    			If 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
    Bloco de código
    titleLOCXCONCEP
    #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|NCC"
    		aDetFac[7] := "0.01"
    		aDetFac[8] := "0.01"
    		aDetFac[9] := "0.00"
    	EndIf
    
    	RestArea(cArea)
    Return aDetFac
    Bloco de código
    titlePEDETIMP
    #include 'protheus.ch'
    #INCLUDE "FWMVCDEF.CH"
    #include "FILEIO.CH"
    
    User Function PEDETIMP()
    	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 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

06. OTRAS DOCUMENTACIONES


...