Punto de Entrada
Descripción: | M485DOCEXP.- Identificar si el documento es de exportación o no. |
Ubicación: | Actualizaciones / Facturación/Transmisión Electrónica |
Eventos: | Transmisión Electrónica |
Programa Fuente: | NFAEXMLCHI.PRW |
Función: | NFAEXmlCHI |
Respuesta: | Nombre | Tipo | Descripción | Obligatorio | lRet | L | Indica si el documento es de Exportación | Si | |
|
|
|
|
Ejemplo:
#Include 'Protheus.ch'
User Function M485DOCEXP()
Local lRet := .F.
Local cFilDoc := PARAMIXB[1] // Filial
Local cNumDoc := PARAMIXB[2] // Número de Documento
Local cSerieDoc := PARAMIXB[3] // Serie
Local cEspDoc := PARAMIXB[4] // Especie
Local cCodCli := PARAMIXB[5] // Código de Cliente
Local cCodLoj := PARAMIXB[6] // código de tienda
If alltrim(cSerieDoc) $"B*E*W*Y"
lRet := .T.
EndIf
Return lRet
Descripción: | M485NCC.- Adicionar información que no es obligatoria ante la SII para el documento de Nota de Crédito. |
Ubicación: | Actualizaciones / Facturación/Transmisión Electrónica |
Eventos: | Transmitir |
Programa Fuente: | NFAEXMLCHI.PRW |
Función: | NFAEXmlCHI |
Respuesta: | Nombre | Tipo | Descripción | Obligatorio | cXML
| Caracter | Cadena XML con los datos adicionales según se describe en ejemplo | Si |
|
|
|
|
|
Ejemplo:
#Include 'Protheus.ch'
User Function M485NCC()
Local cXML := ""
Local cCRLF := (chr(13)+chr(10) )
Local cFilDoc := PARAMIXB[1] // Filial
Local cNumDoc := PARAMIXB[2] // Número de Documento
Local cSerieDoc:= PARAMIXB[3] // Serie
Local cEspDoc := PARAMIXB[4] // Especie
Local cCodCli := PARAMIXB[5] // Código de Cliente
Local cCodLoj := PARAMIXB[6] // código de tienda
cXML += '<Personalizados>' + cCRLF
cXML += ' <campoNumero name="CampoNumerico">1</campoNumero>' + cCRLF
cXML += ' <campoString name="CampoTexto">Esto es un texto</campoString>' + cCRLF
cXML += ' <campoFecha name="CampoTexto">2016-01-31</campoFecha>' + cCRLF
cXML += '</Personalizados>' + cCRLF
Return cXML
Descripción: | M485NDC.- Adicionar información que no es obligatoria ante la SII para el documento de Nota de Débito. |
Ubicación: | Actualizaciones / Facturación/Transmisión Electrónica |
Eventos: | Transmitir |
Programa Fuente: | NFAEXMLCHI.PRW |
Función: | NFAEXmlCHI |
Respuesta: | Nombre | Tipo | Descripción | Obligatorio | cXML
| Caracter | Cadena XML con los datos adicionales según se describe en ejemplo
| Si |
|
|
|
|
|
Ejemplo:
#Include 'Protheus.ch'
User Function M485NDC()
Local cXML := ""
Local cCRLF := (chr(13)+chr(10) )
Local cFilDoc := PARAMIXB[1] // Filial
Local cNumDoc := PARAMIXB[2] // Número de Documento
Local cSerieDoc:= PARAMIXB[3] // Serie
Local cEspDoc := PARAMIXB[4] // Especie
Local cCodCli := PARAMIXB[5] // Código de Cliente
Local cCodLoj := PARAMIXB[6] // código de tienda
cXML += '<Personalizados>' + cCRLF
cXML += ' <campoNumero name="CampoNumerico">1</campoNumero>' + cCRLF
cXML += ' <campoString name="CampoTexto">Esto es un texto</campoString>' + cCRLF
cXML += ' <campoFecha name="CampoTexto">2016-01-31</campoFecha>' + cCRLF
cXML += '</Personalizados>' + cCRLF
Return cXML
Descripción: | M485NF.- Adicionar información que no es obligatoria ante la SII para el documento de Factura Electrónica y Guía de Despacho. |
Ubicación: | Actualizaciones / Facturación/Transmisión Electrónica |
Eventos: | Transmitir |
Programa Fuente: | NFAEXMLCHI.PRW |
Función: | NFAEXmlCHI |
Respuesta: | Nombre | Tipo | Descripción | Obligatorio | cXML
| Caracter | Cadena XML con los datos adicionales según se describe en ejemplo
| Si |
|
|
|
|
|
Ejemplo:
#Include 'Protheus.ch'
User Function M485NF()
Local cXML := ""
Local cCRLF := (chr(13)+chr(10) )
Local cFilDoc := PARAMIXB[1] // Filial
Local cNumDoc := PARAMIXB[2] // Número de Documento
Local cSerieDoc:= PARAMIXB[3] // Serie
Local cEspDoc := PARAMIXB[4] // Especie
Local cCodCli := PARAMIXB[5] // Código de Cliente
Local cCodLoj := PARAMIXB[6] // código de tienda
cXML += '<Personalizados>' + cCRLF
cXML += ' <campoNumero name="CampoNumerico">1</campoNumero>' + cCRLF
cXML += ' <campoString name="CampoTexto">Esto es un texto</campoString>' + cCRLF
cXML += ' <campoFecha name="CampoTexto">2016-01-31</campoFecha>' + cCRLF
cXML += '</Personalizados>' + cCRLF
Return cXML
Descripción: | M485REFNF.- Referenciar los documentos asociados( Orden de Compra, Guía de Despacho, etc) a la Factura o Guía de Despacho. |
Ubicación: | Actualizaciones / Facturación/Transmisión Electrónica |
Eventos: | Transmitir |
Programa Fuente: | NFAEXMLCHI.PRW |
Función: | NFAEXmlCHI |
Respuesta: | Nombre | Tipo | Descripción | Obligatorio | cXML
| Caracter | Cadena XML con la referencia de los documentos asociados. | Si |
|
|
|
|
|
Ejemplo:
#Include 'Protheus.ch'
User Function M485REFNF()
Local cXML := ""
Local cCRLF := (chr(13)+chr(10) )
Local cFilDoc := PARAMIXB[1] // Filial
Local cNumDoc := PARAMIXB[2] // Número de Documento
Local cSerieDoc:= PARAMIXB[3] // Serie
Local cEspDoc := PARAMIXB[4] // Especie
Local cCodCli := PARAMIXB[5] // Código de Cliente
Local cCodLoj := PARAMIXB[6] // código de tienda
Local cAlias := getNextAlias()
Local cQuery := ""
Local cGuiaD := ""
Local cPV := ""
Local cPC := ""
Local nJ := 0
Local aArea := getArea()
Local aRef := {}
Local aGuiaD := {}
Local aPV := {}
Local aPC := {}
Local nK := 0
cQuery := " SELECT D2_DOC,D2_SERIE,D2_PEDIDO,D2_ÍTEMPV,C6_NUMPCOM,C6_ÍTEMPC "
cQuery += " FROM "+RetSqlName("SD2")+" SD2, "+RetSqlName("SC6")+" SC6 "
cQuery += " WHERE SD2.D2_FILIAL='"+xFilial("SD2")+"' AND SD2.D_E_L_E_T_='' "
cquery += " AND SD2.D2_DOC IN "
cQuery += " (SELECT D2_REMITO "
cQuery +=" FROM "+RetSqlName("SD2")
cQuery +=" WHERE D2_FILIAL='"+xFilial("SD2")+"' AND D_E_L_E_T_='' "
cquery +=" AND D2_DOC='"+cNumDoc+"' AND D2_SERIE='"+cSerieDoc+"' AND D2_REMITO<>'' GROUP BY D2_REMITO) "
cQuery += " AND SD2.D2_SERIE='R' AND SC6.C6_FILIAL='"+xFilial("SC6")+"' "
cQuery += " AND SC6.D_E_L_E_T_='' AND SC6.C6_NUM = SD2.D2_PEDIDO AND SC6.C6_ÍTEM=SD2.D2_ÍTEMPV "
cQuery:=ChangeQuery(cQuery)
DbUseArea(.T., "TOPCONN", TCGenQry(,,cQuery), cAlias, .T., .F.)
(cAlias)->(dbgoTop())
If (cAlias)->(Eof())
(cAlias)->(DbCloseArea())
cQuery := " SELECT D2_DOC,D2_SERIE,D2_PEDIDO,D2_ÍTEMPV,C6_NUMPCOM,C6_ÍTEMPC "
cQuery += " FROM "+RetSqlName("SD2")+" SD2, "+RetSqlName("SC6")+" SC6 "
cQuery += " WHERE SD2.D2_FILIAL='"+xFilial("SD2")+"' AND SD2.D_E_L_E_T_='' "
cQuery += " AND SD2.D2_DOC ='"+cNumDoc+"' AND SD2.D2_SERIE='"+cSerieDoc+"'"
cQuery += " AND SC6.C6_FILIAL='"+xFilial("SC6")+"' AND SC6.D_E_L_E_T_='' "
cQuery += " AND SC6.C6_NUM = SD2.D2_PEDIDO AND SC6.C6_ÍTEM=SD2.D2_ÍTEMPV"
cQuery:=ChangeQuery(cQuery)
DbUseArea(.T., "TOPCONN", TCGenQry(,,cQuery), cAlias, .T., .F.)
(cAlias)->(dbgoTop())
EndIf
/* llenar aRef de la siguiente manera:
1. Tipo documento REF -> 52 Guia Despacho | 801 Orden de Compra
2. Número de la referenica -> D2_DOC
3. Fecha de Referencia -> D2_EMISSAO con formato AAAA-MM-DDT00:00:00Z
4. Código de Referencia -> Dejar en blanco
5. Razón de la Referencia -> Dejar en blanco o colocar mensaje Genérico
*/
Do While (cAlias)->(!Eof())
If aScan(aGuiaD,{|x| x[1] == (cAlias)->D2_DOC }) == 0
aAdd(aGuiaD,{(cAlias)->D2_DOC})
aAdd(aRef,{"52",;
(cAlias)->D2_DOC,;
SUBSTR((cAlias)->D2_EMISSAO,0,4) + "-"+ SUBSTR((cAlias)->D2_EMISSAO,5,2) +"-" +"T00:00:00Z",;
"",;
""})
EndIf
If aScan(aPC,{|x| x[1] == (cAlias)->C6_NUMPCOM }) == 0 .AND. !Empty((cAlias)->C6_NUMPCOM)
aAdd(aPC,{(cAlias)->C6_NUMPCOM})
aAdd(aRef,{"801",;
(cAlias)->D2_DOC,;
SUBSTR((cAlias)->D2_EMISSAO,0,4) + "-"+ SUBSTR((cAlias)->D2_EMISSAO,5,2) +"-" +"T00:00:00Z",;
"",;
""})
EndIf
(cAlias)->(DbSkip()
EndDo
cAlias)->(DbCloseArea())
For nK := 1 to len (aRef)
cXML += ' <Referencia>'+ cCRLF
cXML += ' <NroLinRef>'+ alltrim(STR(nK))+'</NroLinRef>'+ cCRLF
cXML += ' <TpoDocRef>' + aRef[nK,1] + '</TpoDocRef>'+ cCRLF
cXML += ' <NumeroRef>'+ aRef[nK,2] + '</NumeroRef>'+ cCRLF
cXML += ' <FechaRef>' + aRef[nK,3] + '</FechaRef>'+ cCRLF
cXML += ' <RazonRef>' + aRef[nK,5] + '</RazonRef>'+ cCRLF
cXML += ' </Referencia>'+ cCRLF
Next
RestArea(aArea)
Return cXML