Árvore de páginas

Versões comparadas

Chave

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

...

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:

#include 'protheus.ch'

User Function M486OWSCOL()

...



	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, detall; realizando la bifurcación mediante el parámetro Opción (PARAMIXB[6]).

...

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

...