Árvore de páginas

Versões comparadas

Chave

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

...

Se solicita la activación de un Punto de Entrada para poder enviar los atributos opcionales disponibles en las clases de los web services de The Factory HKA (Ticket: 8394670).

IMPORTANTE:

La activación de dicho Punto de Entrada deberá ser realizado por algún analistas analista con conocimiento conocimientos de programación (AdvPL), ya que será responsabilidad de este si al no definir correctamente la regla de negocio en el punto Punto de entrada Entrada, esto pudiera causar rechazo en la transmisión de Facturas de EntradaVenta, Notas de Débito o Notas de Crédito.

2.7.2 Configuraciones Previas

Contar con las la siguiente rutina actualizada, con fecha igual o posterior:

RutinaNombre técnicoFecha
M486XFUNCOFunciones genéricas para generación de XML para país Colombia28/04/2020


Compilar el punto de entrada M486OWSCOL, el cual recibo recibe los siguientes parámetros:

  • Serie del documento.
  • Folio del documento.
  • Código del Cliente.
  • Código de la Tienda.
  • Objeto del XML.
  • 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).


Bloco de código
titleEjemplo del Punto de Entrada
linenumberstrue
#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 


Ejemplo del Punto de Entrada:

...

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 Código de lojala Tienda
Local oXML        := PARAMIXB[5] //Nodo 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 a nivel detalle, realizando la bifurcación mediante el parámetro Opción (PARAMIXB[6]).


IMPORTANTE:

  • Si no se encuentran los activados los atributos de una clase, es necesario hacerlo de la siguiente manera Service_TerminosDeEntrega():New() haciendo uso del método New.
  • Se puede hacer uso de los nodos del XML estándar generado desde protheus recibido en el parámetro Objeto del XML (PARAMIXB[5]).
  • Hacer uso de la variable cEspecie para definir regla de negocio por tipo de documento (NF, NDC o NCC).

...