Árvore de páginas

Versões comparadas

Chave

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

 

MA411GRV - Manipula os dados do pedido de vendas gerado através do EDI de Vendas (TOTVS Colaboração)

Características do Requisito

...

Bloco de código
languagec#
linenumberstrue
#Include 'PROTHEUS.CH'
#Include 'XMLXFUN.CH'
#Include 'FILEIO.CH'
#Include "FWEVENTVIEWCONSTS.CH"
 
 
User Function MA411Grv()
 
Local aCabPed  	     	:= PARAMIXB[1] //Cabeçalho do pedido
Local aItePed       		:= PARAMIXB[2] //Itens do pedido
Local nOpc 		         	:= PARAMIXB[3] //Operação do sistema
Local cXML 			          	:= PARAMIXB[4] //Conteúdo do XML
Local nPosQuant	     	:= 0
Local nPosVlrUnit   	:= 0
Local nPosTotal     	:= 0
Local nPosTES			:= 0	
Local nPosCusto			:= 0
Local nXnPosStore			:= 0
Local nYnPosProd			:= 0
Local oXML 		 nX           		:= 0
Local nY            	:= 0
Local oXML          	:= TXMLManager():New()
Local aItens        		:= {}
 
//-------------------------------------------------------------------
// Parseia o XML.  
//-------------------------------------------------------------------	  
If ( ! Empty( cXML ) .And. ( oXML:Read( cXML ) ) )  
 
	    //-------------------------------------------------------------------
	    // Recupera os itens do pedido.  
   
	 //-------------------------------------------------------------------			
	aItens           
    aItens			:= oXML:XPathGetChildArray( "/BusinessContent/SalesOrderItens" ) 
    
	nPosQuant		    nPosCusto	  := aScan( aCabPed, { |z| z[1] == "C5_CLIENTE" } )
	nPosStore	  := aScan( aCabPed, { |z| z[1] == "C5_LOJACLI" } )
	nPosQuant     := aScan( aItePed[1], {|z| z[1] == "C6_QTDVEN" } )

	nPosVlrUnit	   := aScan( aItePed[1], {|z| z[1] == "C6_PRCVEN" } )

	nPosTotal			nPosTotal     := aScan( aItePed[1], {|z| z[1] == "C6_VALOR" } )
	nPosProd	  := aScan( aItePed[1], { |z| z[1] == "C6_PRODUTO" } )
	nPosTES       := aScan( aItePed[1], { |z| z[1] == "C6_VALORTES" } )
 
	    For nX := 1 To Len( aItens )
	
		nVlrUnit 		     
        nVlrUnit    := Val( oXML:XPathGetNodeValue( aItens[nX][2] +"/UnityPrice" )	)
		
		    )
         
        //-------------------------------------------------------------------	
		  
        // Altera o preço de venda
		        //-------------------------------------------------------------------	
		  
        If nVlrUnit > 0 
			
            aItePed[nX][nPosVlrUnit][2]	 := nVlrUnit + ( nVlrUnit * 0.20 ) 
			
            aItePed[nX][nPosTotal][2] 	  := A410Arred( aItePed[nX][nPosVlrUnit][2] * aItePed[nX][nPosQuant][2] , "C6_VALOR" )
		EndIf
		
	Next nX 
	
EndIf  

        EndIf
        
        //-------------------------------------------------- ----------------  
        // 			Preenche o TES de acordo com o TES Inteligente
        // Parâmetros da rotina:
        // ExpN1 = Documento de 1-Entrada / 2-Saida                     
        // ExpC2 = Tipo de Operacao Tabela "DF" do SX5                  
        // ExpC3 = Codigo do Cliente ou Fornecedor
        // ExpC4 = Loja do Cliente ou Fornecedor                        
        // ExpC5 = Tipo CF
        // ExpC6 = Produto                           
        // ExpC7 = Campo    
        //-------------------------------------------------------------------  
        aItePed[nX][nPosTES][2] := MaTesInt( 2, '01', aCabPed[nPosCusto][2], aCabPed[nPosStore][2], 'C', aItePed[nX][nPosProd][2] )    
      
    Next nX
EndIf 
 
Return{ aCabPed, aItePed }