Árvore de páginas

Versões comparadas

Chave

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

...

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

    Aviso
    titleImportante

    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.


    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] //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
    #include 'protheus.ch'
    #INCLUDE "FWMVCDEF.CH"
    #include "FILEIO.CH"
    
    User Function PEXMLDOC()
    	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 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 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
    #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

...