Tempo aproximado para lectura: 00:05:00 min
Duda
¿Cuál es el punto de entrada para enviar los atributos opcionales disponibles en las clases de los web services de The Factory HKA?
Ambiente
Cross Segmentos - TOTVS BackOffice (Línea Protheus) - MI - Facturación (SIGAFAT) - 12
Solución
El punto de entrada deberá ser realizado por algún analista con conocimientos de programación (AdvPL), ya que será responsabilidad de este si al no definir correctamente la regla de negocio, esto pudiera causar rechazo en la transmisión de Facturas de Venta, Notas de Débito o Notas de Crédito;
Compilar el punto de entrada M486OWSCOL, el cual recibe los siguientes parámetros:
- Serie del documento.
- Folio del documento.
- Código del Cliente.
- Código de la Tienda.
- Objeto del XML (Contiene la estructura estándar del XML generado Protheus).
- Opción (Indica a qué nivel se agregarán los atributos opcionales: 1 = Nivel documento y 2 = Nivel ítem).
- Objeto con atributos del web services de The Factory HKA (Solo atributos de la clase FacturaGeneral)
Ejemplo:
#include 'protheus.ch'
User Function M486OWSCOL()
Local cSerieDoc := PARAMIXB[1] //Serie
Local cNumDoc := PARAMIXB[2] //Número de Documento
Local cCodCli := PARAMIXB[3] //Código de Cliente
Local cCodLoj := PARAMIXB[4] //Código de la Tienda
Local oXML := PARAMIXB[5] //Objeto del XML
Local nOpc := PARAMIXB[6] //1=Nivel documento 2=Nivel detalle
Local oWS := PARAMIXB[7] //Objeto de web services
Local nItem := Val(oXML:_CBC_ID:TEXT)
Local cCodProd := ""
Local cSDITem := ""
Local cFilSD := xFilial("SD2")
If nOpc == 1 //Encabezado
//F2_FILIAL+F2_DOC+F2_SERIE+F2_CLIENTE+F2_LOJA+F2_FORMUL+F2_TIPO (Índice 1)
//Clase oWSCliente
oWS:oWSCliente:cnombreComercial := "NOMBRE COMERCIAL PE"
//Clase oWSterminosEntrega
oWS:oWSterminosEntrega := Service_TerminosDeEntrega():New()
oWS:oWSterminosEntrega:ccostoTransporte:= "18.00"
ElseIf nOpc == 2 //Detalle del documento
cCodProd := Padr(oXML:_FE_ITEM:_CAC_SELLERSITEMIDENTIFICATION:_CBC_ID:TEXT,TamSX3("D2_COD")[1],' ')
cSDITem := Padl(oXML:_CBC_ID:TEXT,TamSX3("D2_ITEM")[1],'0')
dbSelectArea("SD2")
SD2->(dbSetOrder(3)) //D2_FILIAL + D2_DOC + D2_SERIE + D2_CLIENTE + D2_LOJA + D2_COD + D2_ITEM
If SD2->(dbSeek( cFilSD + cNumDoc + cSerieDoc + cCodCli + cCodLoj + cCodProd + cSDITem))
//Clase oWSextras (Factura_Detalle)
oWS:oWSextras := Service_ArrayOfExtras():New()
oWSExtDet := Service_Extras():NEW()
oWSExtDet:ccontrolInterno1 := "NO. SERIE"
oWSExtDet:cnombre := "1"
oWSExtDet:cpdf := "1"
oWSExtDet:cvalor := SD2->D2_NUMSERI
oWSExtDet:cxml := "1"
aAdd(oWS:oWSextras:oWSextras,oWSExtDet)
EndIf
EndIf
Return Nil
Nota:
- En el punto de entrada de ejemplo, se llenan atributos que son opcionales a nivel documento y nivel detalle; realizando la bifurcación mediante el parámetro Opción (PARAMIXB[6])
- Si al realizar la impresión estándar del archivo PDF de The Factory KHA, los campos adicionales enviados no son visualizados; se tendrá que tratar directamente con el proveedor tecnológico, ya que de ellos generan el archivo PDF que es retornado.
0 Comentarios