BlackTDN Search

domingo, 4 de julho de 2010

Protheus :: Exemplo de WebService de Inclusão de Pedidos (MATA410)

Depois de muito tempo "off", hoje postarei um exemplo de WebService que desenvolvi para minha Amiga Carla Soneta. Esse WebService será utilizado para efetuar pedido (rotina mata410), consultar pedido por cliente (usando o CNPJ/CGC) deletar pedido e consultar pedido para determinado cliente efetuado em um intervalo de data. Esse WebService foi baseado no original da Totvs/Microsiga o WSMAT410.prw e modificado para atender a uma necessidade específica.

Bom Proveito.


#INCLUDE "APWEBSRV.CH"
#INCLUDE "PROTHEUS.CH"
#INCLUDE "TBICONN.CH"

#IFNDEF CRLF
 #DEFINE CRLF Chr(13)+Chr(10)

#ENDIF 

#DEFINE STR0001 "Serviço de consulta e atualização dos pedidos de venda Pedido"
#DEFINE STR0002 "Método de Inclusão do Pedido de Venda"
#DEFINE STR0003 "Método de Exclusão do Pedido de Venda"

#DEFINE STR0004 "Método de Consulta ao Pedido de Venda"
#DEFINE STR0005  "Método de Consulta a Lista de Pedido(s) de Venda(s) Por Período e CNPJ"
#DEFINE STR0006 "Cliente invalido"
#DEFINE STR0007 "CNPJ invalido"
#DEFINE STR0008 "Problema no Cabecalho do Pedido"

#DEFINE STR0009 "Problema nos Itens do Pedido"
#DEFINE STR0010 "Pedido nao encontrado"
#DEFINE STR0011 "O Pedido de numero: " 
#DEFINE STR0012 "Da Empresa CNPJ/CGC: "
#DEFINE STR0013 "Foi excluido com sucesso"
#DEFINE STR0014 "Liberado"

#DEFINE STR0015 "01 - Bloqueio de Credito por Valor"
#DEFINE STR0016 "04 - Vencto do Limite de Credito - Data de Credito Vencida"
#DEFINE STR0017 "05 - Bloqueio de Credito por Estorno"
#DEFINE STR0018 "06 - Bloqueio de Credito por Risco"
#DEFINE STR0019 "09 - Rejeicao de Credito - Rejeitado Manualmente"
#DEFINE STR0020 "10 - FATURADO"

#DEFINE STR0021 "Liberado"
#DEFINE STR0022 "02 - Bloqueio de Estoque"
#DEFINE STR0023 "03 - Bloqueio Manual de Estoque"
#DEFINE STR0024 "10 - FATURADO"
#DEFINE STR0025 "01 - Bloqueio de Enderecamento do WMS/Somente SB2"
#DEFINE STR0026 "02 - Bloqueio de Enderecamento do WMS"

#DEFINE STR0027 "03 - Bloqueio de WMS - Externo"
#DEFINE STR0028 "05 - Liberacao para Bloqueio 01"
#DEFINE STR0029 "06 - Liberacao para Bloqueio 02"
#DEFINE STR0030 "07 - Liberacao para Bloqueio 03"
#DEFINE STR0031 "Nao Existem Pedidos para o Cliente CNPJ: "
#DEFINE STR0032 "No Periodo Informado: "

/*/
ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿
³WSSTRUCT  ³tStatusPedido          ³Autor³Marinaldo de Jesus &³Data ³01/07/2010³
³          ³                       ³     ³Carla (amor) Soneta ³     ³          ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´
³Descri‡…o ³Estrutura do Status do Pedido                        ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³Sintaxe   ³<vide parametros formais>              ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³Parametros³<vide parametros formais>                 ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³Uso       ³WebService Pedido                            ³
ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ/*/

WSSTRUCT tStatusPedido
 WSDATA BloqCredito    AS String OPTIONAL //C9_BLCRED:
                /*/
                 " " - Liberado
                 01 - Bloqueio de Credito por Valor 
                 04 - Vencto do Limite de Credito - Data de Credito Vencida
                 05 - Bloqueio de Credito por Estorno
                 06 - Bloqueio de Credito por Risco
                 09 - Rejeicao de Credito - Rejeitado Manualmente
                 10 - FATURADO
                /*/ 
    WSDATA BloqEstoque    AS String OPTIONAL //C9_BLEST:

                   /*/
                    " " - Liberado
                    02 - Bloqueio de Estoque
                    03 - Bloqueio Manual de Estoque
                    10 - FATURADO
                   /*/ 
 WSDATA BloqueioWMS    AS String OPTIONAL //C9_BLWMS:

                /*/
                 01 - Bloqueio de Enderecamento do WMS/Somente SB2
                 02 - Bloqueio de Enderecamento do WMS
                 03 - Bloqueio de WMS - Externo
                 05 - Liberacao para Bloqueio 01

                 06 - Liberacao para Bloqueio 02
                 07 - Liberacao para Bloqueio 03
                /*/ 

ENDWSSTRUCT

/*/
ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿
³WSSTRUCT  ³tAddPedidoDet          ³Autor³Marinaldo de Jesus &³Data ³01/07/2010³
³          ³                       ³     ³Carla (amor) Soneta ³     ³          ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´
³Descri‡…o ³Estrutura dos Detalhes de Inclusao de Pedidos                      ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³Sintaxe   ³<vide parametros formais>              ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³Parametros³<vide parametros formais>                 ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³Uso       ³WebService Pedido                            ³
ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ/*/

WSSTRUCT tAddPedidoDet
 WSDATA ProdutoPedido   AS String  //C6_PRODUTO
 WSDATA QuantidadeProduto  AS Integer //C6_QTDVEN
ENDWSSTRUCT

/*/
ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿
³WSSTRUCT  ³tAddPedidoCab        ³Autor³Marinaldo de Jesus &³Data ³01/07/2010³
³          ³                       ³     ³Carla (amor) Soneta ³     ³          ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´
³Descri‡…o ³Estrutura do Cabecalho de Inclusao de Pedidos                      ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³Sintaxe   ³<vide parametros formais>              ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³Parametros³<vide parametros formais>                 ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³Uso       ³WebService Pedido                            ³
ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ/*/

WSSTRUCT tAddPedidoCab
 WSDATA CondicaoPagamento  AS String //C5_CONDPAG
 WSDATA TransportadoraCliente AS String //C5_TRANSP
 WSDATA tzItensDoPedido   AS Array Of tAddPedidoDet
ENDWSSTRUCT
           
/*/
ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿
³WSSTRUCT  ³tGetPedidoDet          ³Autor³Marinaldo de Jesus &³Data ³01/07/2010³
³          ³                       ³     ³Carla (amor) Soneta ³     ³          ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´
³Descri‡…o ³Estrutura do Detalhe para Consulta de Pedidos                      ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³Sintaxe   ³<vide parametros formais>              ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³Parametros³<vide parametros formais>                 ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³Uso       ³WebService Pedido                            ³
ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ/*/

WSSTRUCT tGetPedidoDet
 WSDATA Armazem     AS String //C6_LOCAL
 WSDATA Bloqueio     AS String //C6_BLQ
 WSDATA DataUltimoFaturamento AS Date  //C6_DATFAT
 WSDATA DescricaoProduto   AS String //C6_DESCRI
 WSDATA CFOP      AS String //C6_CF
 WSDATA ItemPedido    AS String //C6_ITEM

 WSDATA NotaFiscal    AS String //C6_NOTA
 WSDATA PrecoVendaProduto  AS Float //C6_PRCVEN
 WSDATA ProdutoPedido   AS String //C6_PRODUTO
 WSDATA QuantidadeEntregue  AS Integer //C6_QTDENT
 WSDATA QuantidadeLiberada  AS Integer //C6_QTDLIB
 WSDATA QuantidadeProduto  AS Integer //C6_QTDVEN

 WSDATA SerieNF     AS String //C6_SERIE
 WSDATA TipoDeEntradaSaida  AS String //C6_TES
 WSDATA UnidadeMedida   AS String //C6_UM
 WSDATA tzStatusPedido   AS tStatusPedido OPTIONAL
 WSDATA ValorTotalDoProduto  AS Float //C6_VALOR
ENDWSSTRUCT

/*/
ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿
³WSSTRUCT  ³tGetPedidoCab          ³Autor³Marinaldo de Jesus &³Data ³01/07/2010³
³          ³                       ³     ³Carla (amor) Soneta ³     ³          ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´
³Descri‡…o ³Estrutura do Cabecalho para Consulta de Pedidos                    ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³Sintaxe   ³<vide parametros formais>              ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³Parametros³<vide parametros formais>                 ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³Uso       ³WebService Pedido                            ³
ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ/*/

WSSTRUCT tGetPedidoCab
 WSDATA NumPedidoVenda   AS String //C5_NUM
 WSDATA TipoDePedido    AS String //C5_TIPO
 WSDATA CodCliente    AS String //C5_CLIENTE
 WSDATA CodLojaCliente   AS String //C5_LOJACLI
 WSDATA CodClienteEntrega  AS String //C5_CLIENT
 WSDATA CodLojaEntrega   AS String //C5_LOJAENT

 WSDATA CondicaoPagamento  AS String //C5_CONDPAG
 WSDATA EmissaoPedido   AS Date  //C5_EMISSAO
 WSDATA IssIncluidoPreco   AS String //C5_INCISS
 WSDATA MoedaDoPedido   AS Integer //C5_MOEDA
 WSDATA NomeDoCliente   AS String //C5_NOMECLI

 WSDATA TipoDeCliente   AS String //C5_TIPOCLI
 WSDATA TipoDeFrete    AS String //C5_TPFRETE
 WSDATA TipoDeLiberacaoPedido AS String //C5_TIPLIB
 WSDATA TransportadoraCliente AS String //C5_TRANSP
 WSDATA tzItensDoPedido   AS Array Of tGetPedidoDet
 WSDATA tzValorTotalDoPedido  AS Float
ENDWSSTRUCT

/*/
ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿
³WSSERVICE ³WsPedidoServicePeca    ³Autor³Marinaldo de Jesus &³Data ³01/07/2010³
³          ³                       ³     ³Carla (amor) Soneta ³     ³          ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´
³Descri‡…o ³Serviço de consulta e atualização dos pedidos de venda Pedido    ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³Sintaxe   ³<vide parametros formais>              ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³Parametros³<vide parametros formais>                 ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³Uso       ³WebService Pedido                            ³
ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ/*/

WSSERVICE WsPedidoServicePeca DESCRIPTION STR0001 NAMESPACE "http://200.182.30.2:98/ws/wspedidoservicepeca.apw" //"Serviço de consulta e atualização dos pedidos de venda Pedido"

 WSDATA CNPJ                  AS String
 WSDATA dIniConsulta    AS Date OPTIONAL
 WSDATA dFimConsulta    AS Date OPTIONAL
 WSDATA NumeroDoPedido   AS String
 WSDATA tAddPedido    AS tAddPedidoCab
 WSDATA tGetPedido    AS tGetPedidoCab
 WSDATA tGetPedidoKey   AS Array OF tGetPedidoCab
 WSDATA WsStrDel                 AS String

 WSMETHOD AddPedidoPeca      DESCRIPTION STR0002 //"Método de inclusão do pedido de venda"
 WSMETHOD DelPedidoPeca      DESCRIPTION STR0003 //"Método de exclusão do pedido de venda"

  WSMETHOD GetPedidoPeca   DESCRIPTION STR0004 //"Método de Consulta ao pedido de venda"
 WSMETHOD GetPedidoKeyPeca  DESCRIPTION STR0005 //"Método de Consulta a Lista de pedido(s) de venda(s) Por Período e CNPJ"

ENDWSSERVICE

/*/
ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿
³WSMETHOD  ³AddPedidoPeca          ³Autor³Marinaldo de Jesus &³Data ³01/07/2010³
³          ³                       ³     ³Carla (amor) Soneta ³     ³          ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´
³Descri‡…o ³Adicionar Pedido de Peca             ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³Sintaxe   ³<vide parametros formais>              ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³Parametros³<vide parametros formais>                 ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³Uso       ³WebService Pedido                            ³
ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ/*/

WSMETHOD AddPedidoPeca WSRECEIVE CNPJ, tAddPedido WSSEND NumeroDoPedido WSSERVICE WsPedidoServicePeca

Local aArea          := {} 
Local aCab    := {} 

Local aItens   := {} 
Local aErros       := {} 


Local cStrErro       := "" 
Local cSC5Filial     := ""
Local cSA1Filial  := ""

Local cLojaCliente  := ""
Local cCodigoCliente    := ""

Local lReturn   := .T. 

Local nErro          := 0 
Local nErros   := 0 


RpcSetType(3)
IF FindFunction("WfPrepEnv")
 WfPrepEnv("01","03")

Else
 PREPARE ENVIRONMENT EMPRESA "01" FILIAL "03"
EndIF

PRIVATE lMsErroAuto     := .F. 
PRIVATE lAutoErrNoFile := .T. 

aArea     := GetArea()  


BEGIN SEQUENCE
    
 IF Empty(::CNPJ)
  lReturn := .F.
  SetSoapFault( "AddPedidoPeca" , STR0006 ) //""Cliente invÁlido"

  BREAK
 EndIF
 
 ::CNPJ     := UnMaskCNPJ( ::CNPJ )

 
 cSA1Filial   := xFilial( "SA1" )
 
 SA1->( dbSetOrder( RetOrder( "SA1" , "A1_FILIAL+A1_CGC" ) ) )

 IF SA1->( !dbSeek( cSA1Filial + ::CNPJ , .F. ) )

  lReturn := .F.
  SetSoapFault( "AddPedidoPeca" , STR0007 + " " + cSA1Filial + TransForm( ::CNPJ , GetSx3Cache( "A1_CGC" , "X3_PICTURE" ) )  ) //"CNPJ invÁlido"

  BREAK
 EndIF

 SA1->( dbSetOrder( RetOrder( "SA1" , "A1_FILIAL+A1_COD+A1_LOJA" ) ) )

 cLojaCliente  := SA1->A1_LOJA
 cCodigoCliente  := SA1->A1_COD 

 SC5->( dbSetOrder( RetOrder( "SC5" , "C5_FILIAL+C5_NUM" ) ) )

 cSC5Filial := xFilial( "SC5" )
 
 SC5->( MsGoto( 0 ) )

 
 /*/
 ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
 ³Atualiacao do cabecalho do pedido de venda                              ³
 ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ/*/
 lReturn := PutPvHead( ::tAddPedido , @aCab , @cCodigoCliente , @cLojaCliente )

 IF !( lReturn )
  SetSoapFault( "AddPedidoPeca" , STR0008 ) //"Problema no Cabeçalho do Pedido"

  BREAK
 EndIF

 /*/
 ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
 ³Atualiacao dos itens do pedido de venda                                 ³
 ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ/*/
 lReturn := PutPvItem( @::tAddPedido , @::tAddPedido:tzItensDoPedido , @aItens )

 IF !( lReturn )
  SetSoapFault( "AddPedidoPeca" , STR0009 ) //"Problema nos Itens do Pedido"

  BREAK
 EndIF

 /*/
 ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
 ³ Efetiva a Inclusao do Pedido            ³
 ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ/*/
 MATA410( @aCab , @aItens , 3 )

 /*/
 ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
 ³ Verifica a ocorrencia de Erros na Inclusao do Pedido      ³
 ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ/*/
 IF ( lMsErroAuto )
  aErros  := GetAutoGRLog()

  nErros := Len( aErros )
  For nErro := 1 To nErros
   cStrErro += ( aErros[ nErros ] + CRLF )

  Next nErros
  SetSoapFault( "AddPedidoPeca" , cStrErro )
  lReturn := .F.
  BREAK
 EndIF

 /*/
 ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
 ³ Retorna o Numero do Pedido apos a Inclusao        ³
 ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ/*/
 ::NumeroDoPedido := SC5->C5_NUM

END SEQUENCE

RestArea(aArea)

RESET ENVIRONMENT

Return( lReturn )

/*/
ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿
³Function  ³PutPvHead              ³Autor³Marinaldo de Jesus &³Data ³01/07/2010³
³          ³                       ³     ³Carla (amor) Soneta ³     ³          ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´
³Descri‡…o ³Grava e/ou Altera o Cabecalho do Pedido de Venda                   ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³Sintaxe   ³<vide parametros formais>              ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³Parametros³<vide parametros formais>                 ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³Uso       ³WebService Pedido                            ³
ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ/*/

Static Function PutPvHead( oObj , aCab , cCodigoCliente , cLojaCliente )

Local aArea  := GetArea() 

Local lReturn := .T.   


/*/
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³Atualiacao do cabecalho do pedido de venda                              ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ/*/
aAdd( aCab , { "C5_NUM"  , NIL       , NIL } )

aAdd( aCab , { "C5_EMISSAO" , dDataBase      , NIL } )

aAdd( aCab , { "C5_TIPO" , "N"       , NIL } )

aAdd( aCab , { "C5_CLIENTE" , cCodigoCliente    , NIL } )

aAdd( aCab , { "C5_LOJACLI" , cLojaCliente     , NIL } )

aAdd( aCab , { "C5_CLIENT" , cCodigoCliente    , NIL } )

aAdd( aCab , { "C5_LOJAENT" , cLojaCliente       , NIL } )

aAdd( aCab , { "C5_TRANSP" , oObj:TransportadoraCliente , NIL } )

aAdd( aCab , { "C5_TIPOCLI" , oObj:TipoDeCliente   , NIL } )

aAdd( aCab , { "C5_CONDPAG" , oObj:CondicaoPagamento  , NIL } )

/*/
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ Preenche a tab. de preco de acordo com o cad. de cliente ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ/*/
SA1->( dbSetOrder( RetOrder( "SA1" , "A1_FILIAL+A1_COD+A1_LOJA" ) ) )

IF SA1->( dbSeek( xFilial( "SA1" ) + cCodigoCliente + cLojaCliente , .F. ) )

 IF !Empty( SA1->A1_TABELA )
   aAdd( aCab , { "C5_TABELA" , SA1->A1_TABELA , NIL } )

 Else
  aAdd( aCab , { "C5_TABELA" , NIL    , NIL } )

 EndIF
 IF !Empty(SA1->A1_DESC)
  aAdd( aCab , { "C5_DESC1" , SA1->A1_DESC  , NIL } )

 Else
  aAdd( aCab , { "C5_DESC1" , 0    , NIL } )

 EndIF 
EndIF 

aAdd( aCab , { "C5_DESC2" , 0  , NIL } )

aAdd( aCab , { "C5_DESC3" , 0  , NIL } )

aAdd( aCab , { "C5_DESC4" , 0  , NIL } )

aAdd( aCab , { "C5_DESCONT" , 0  , NIL } )

aAdd( aCab , { "C5_PDESCAB" , 0  , NIL } )

aAdd( aCab , { "C5_BANCO" , NIL  , NIL } )

aAdd( aCab , { "C5_DESCFI" , 0  , NIL } )

aAdd( aCab , { "C5_ACRSFIN" , 0  , NIL } )

aAdd( aCab , { "C5_COTACAO" , NIL  , NIL } )

aAdd( aCab , { "C5_TPFRETE" , "F"  , NIL } )

aAdd( aCab , { "C5_FRETE" , NIL  , NIL } )

aAdd( aCab , { "C5_SEGURO" , NIL  , NIL } )                

aAdd( aCab , { "C5_DESPESA" , NIL  , NIL } )

aAdd( aCab , { "C5_FRETAUT" , NIL  , NIL } )

aAdd( aCab , { "C5_REAJUST" , NIL  , NIL } )

aAdd( aCab , { "C5_MOEDA" , 1  , NIL } )

aAdd( aCab , { "C5_PESOL" , NIL  , NIL } )

aAdd( aCab , { "C5_PBRUTO" , NIL  , NIL } )

aAdd( aCab , { "C5_REDESP" , ""  , NIL } )

aAdd( aCab , { "C5_MENNOTA" , NIL  , NIL } )

aAdd( aCab , { "C5_MENPAD" , NIL  , NIL } )

aAdd( aCab , { "C5_INCISS" , "N"  , NIL } )

aAdd( aCab , { "C5_TIPLIB" , "1"  , NIL } )

aCab := WsAutoOpc( @aCab )

RestArea( aArea )

Return( lReturn )

/*/
ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿
³Function  ³PutPvItem      ³Autor³Marinaldo de Jesus &³Data ³01/07/2010³
³          ³                       ³     ³Carla (amor) Soneta ³     ³          ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´
³Descri‡…o ³Grava e/ou Altera os Itens do Pedido de Venda                      ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³Sintaxe   ³<vide parametros formais>              ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³Parametros³<vide parametros formais>                 ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³Uso       ³WebService Pedido                            ³
ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ/*/

Static Function PutPvItem( oObjSC5 , oObjSC6 , aItens )

Local aArea       := GetArea()  
Local aItem       := {}    


Local cItemSeq  := Replicate( "0" , GetSx3Cache( "C6_ITEM" , "X3_TAMANHO" ) )

Local lReturn    := .T.

Local nItem         := 0

Local nItens  := 0

nItens := Len( oObjSC6 )

For nItem := 1 To nItens

 cItemSeq := Soma1( cItemSeq )

 aAdd( aItem , { "C6_ITEM"  , cItemSeq          , NIL } )

 aAdd( aItem , { "C6_PRODUTO" , oObjSC6[nItem]:ProdutoPedido     , NIL } )

 aAdd( aItem , { "C6_UM"   , NIL           , NIL } )

 aAdd( aItem , { "C6_SEGUM"  , NIL           , NIL } )

 aAdd( aItem , { "C6_QTDVEN"  , oObjSC6[nItem]:QuantidadeProduto    , NIL } )

 aAdd( aItem , { "C6_UNSVEN"  , NIL           , NIL } )

 aAdd( aItem , { "C6_PRUNIT"  , NIL              , NIL } )

 aAdd( aItem , { "C6_PRCVEN"  , NIL           , NIL } )

 aAdd( aItem , { "C6_VALOR"  , NIL           , NIL } )

 aAdd( aItem , { "C6_QTDLIB"  , NIL           , NIL } )

 aAdd( aItem , { "C6_QTDLIB2" , NIL           , NIL } )

 aAdd( aItem , { "C6_OPER"  , NIL           , NIL } )

 aAdd( aItem , { "C6_CF"   , NIL              , NIL } )

 aAdd( aItem , { "C6_LOCAL"  , NIL           , NIL } )

 aAdd( aItem , { "C6_DESCONT" , NIL           , NIL } )

 aAdd( aItem , { "C6_VALDESC" , NIL           , NIL } )

 aAdd( aItem , { "C6_ENTREG"  , NIL           , NIL } )

 aAdd( aItem , { "C6_PEDCLI"  , NIL           , NIL } )

 aAdd( aItem , { "C6_DESCRI"  , NIL           , NIL } )

 aAdd( aItem , { "C6_NFORI"  , NIL           , NIL } )

 aAdd( aItem , { "C6_SERIORI" , NIL           , NIL } )

 aAdd( aItem , { "C6_ITEMORI" , NIL           , NIL } )

 aAdd( aItem , { "C6_LOTECTL" , NIL           , NIL } )

 aAdd( aItem , { "C6_NUMLOTE" , NIL           , NIL } )

 aAdd( aItem , { "C6_LOCALIZ" , NIL           , NIL } )

 aAdd( aItem , { "C6_NUMSERI" , NIL           , NIL } )

 aAdd( aItem , { "C6_CODFAB"  , NIL           , NIL } )

 aAdd( aItem , { "C6_LOJAFA"  , NIL           , NIL } )

 aItem := WsAutoOpc( aItem , .T. )

 aAdd( aItens , aItem )

 aItem := {}

Next nItem

RestArea( aArea )

Return ( lReturn )

/*/
ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿
³WSMETHOD  ³DelPedidoPeca          ³Autor³Marinaldo de Jesus &³Data ³01/07/2010³
³          ³                       ³     ³Carla (amor) Soneta ³     ³          ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´
³Descri‡…o ³Excluir Pedido de Peca                 ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³Sintaxe   ³<vide parametros formais>              ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³Parametros³<vide parametros formais>                 ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³Uso       ³WebService Pedido                            ³
ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ/*/

WSMETHOD DelPedidoPeca WSRECEIVE CNPJ, NumeroDoPedido WSSEND WsStrDel WSSERVICE WsPedidoServicePeca

Local aCab    := {}
Local aItens   := {}

Local aErros   := {}

Local cStrErro    := ""

Local cSA1Filial  := ""

Local lReturn   := .T.


Local nErro       := 0
Local nErros   := 0

RpcSetType(3)
IF FindFunction("WfPrepEnv")
 WfPrepEnv("01","03")

Else
 PREPARE ENVIRONMENT EMPRESA "01" FILIAL "03"
EndIF

PRIVATE lMsErroAuto    := .F.
PRIVATE lAutoErrNoFile := .T.

BEGIN SEQUENCE

 IF Empty(::CNPJ)

  lReturn := .F.
  SetSoapFault( "DelPedidoPeca" , STR0006 ) //""Cliente invÁlido"

  BREAK
 EndIF

 ::CNPJ     := UnMaskCNPJ( ::CNPJ )

 cSA1Filial   := xFilial( "SA1" )
 
 SA1->( dbSetOrder( RetOrder( "SA1" , "A1_FILIAL+A1_CGC" ) ) )

 IF SA1->( !dbSeek( cSA1Filial + ::CNPJ , .F. ) )

  lReturn := .F.
  SetSoapFault( "DelPedidoPeca" , STR0007 + " " + cSA1Filial + TransForm( ::CNPJ , GetSx3Cache( "A1_CGC" , "X3_PICTURE" ) )  ) //"CNPJ invÁlido"

  BREAK
 EndIF

 aAdd( aCab , { "C5_NUM" , ::NumeroDoPedido , NIL } )

 MATA410( @aCab , @aItens , 5 )
 IF ( lMsErroAuto )

  aErros := GetAutoGRLog()
  nErros := Len( aErros )

  For nErro := 1 To nErros
   cStrErro += ( aErros[nErros] + CRLF )

  Next nErro
  SetSoapFault( "DelPedidoPeca" ,  cStrErro )
  lReturn := .F.
  BREAK
 EndIF

 
 SC5->( dbSetOrder( RetOrder( "SC5" , "C5_FILIAL+C5_NUM" ) ) )

 IF SC5->( dbSeek( xFilial( "SC5" ) + ::NumeroDoPedido , .F. ) )

  lReturn := .F.
  BREAK
 EndIF
 
 ::WsStrDel := STR0011 + ::NumeroDoPedido             //"O Pedido de número: "

 ::WsStrDel += " " 
 ::WsStrDel += STR0012 + TransForm( ::CNPJ , GetSx3Cache( "A1_CGC" , "X3_PICTURE" ) ) //"Da Empresa CNPJ/CGC : "

 ::WsStrDel += " " 
 ::WsStrDel += STR0013      //"Foi excluido com sucesso"


END SEQUENCE

RESET ENVIRONMENT

Return( lReturn )

/*/
ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿
³WSMETHOD  ³GetPedidoPeca          ³Autor³Marinaldo de Jesus &³Data ³01/07/2010³
³          ³                       ³     ³Carla (amor) Soneta ³     ³          ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´
³Descri‡…o ³Consulta ao Pedido de Venda             ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³Sintaxe   ³<vide parametros formais>              ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³Parametros³<vide parametros formais>                 ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³Uso       ³WebService Pedido                            ³
ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ/*/

WSMETHOD GetPedidoPeca WSRECEIVE CNPJ,NumeroDoPedido WSSEND tGetPedido WSSERVICE WsPedidoServicePeca

Local aArea
Local aAreaSC9

Local cLoja
Local cCliente

Local cSC5Alias  := "SC5"

Local cSC6Alias  := "SC6"
Local cSC5Filial := ""
Local cSC6Filial := ""

Local cSC9Filial := ""
Local cSA1Filial := ""
Local cNumPedido := ::NumeroDoPedido


Local lReturn  := .T.

Local nItem         := 0

#IFDEF TOP
 Local lSC6Query := .F.
#ENDIF

RpcSetType(3)

IF FindFunction("WfPrepEnv")
 WfPrepEnv("01","03")
Else

 PREPARE ENVIRONMENT EMPRESA "01" FILIAL "03"
EndIF

aArea        := GetArea()

aAreaSC9   := SC9->( GetArea() )

cSC5Filial   := xFilial( "SC5" )

cSC6Filial   := xFilial( "SC6" )
cSC9Filial   := xFilial( "SC9" )

cSA1Filial   := xFilial( "SA1" )

BEGIN SEQUENCE

 IF Empty(::CNPJ)

  lReturn := .F.
  SetSoapFault( "GetPedidoPeca" , STR0006 ) //""Cliente invÁlido"

  BREAK
 EndIF

 ::CNPJ := UnMaskCNPJ( ::CNPJ )

 SA1->( dbSetOrder( RetOrder( "SA1" , "A1_FILIAL+A1_CGC" ) ) )

 IF SA1->( !dbSeek( cSA1Filial + ::CNPJ , .F. ) )

  lReturn := .F.
  SetSoapFault( "GetPedidoPeca" , STR0007 + " " + cSA1Filial + TransForm( ::CNPJ , GetSx3Cache( "A1_CGC" , "X3_PICTURE" ) ) ) //"CNPJ invÁlido"

  BREAK
 EndIF

 SA1->( dbSetOrder( RetOrder( "SA1" , "A1_FILIAL+A1_COD+A1_LOJA" ) ) )

 cCliente  := SA1->A1_COD 
 cLoja       := SA1->A1_LOJA

 IF (;

   Empty( cCliente );
   .and.;
   Empty( cLoja );

  ) 
  lReturn := .F.
  SetSoapFault( "GetPedidoPeca" , STR0006 ) //""Cliente invÁlido"

  BREAK
 EndIF

 SC5->( dbSetOrder( RetOrder( "SC5" , "C5_FILIAL+C5_NUM" ) ) )

 IF SC5->( !dbSeek( cSC5Filial + cNumPedido , .F. ) )

  lReturn := .F.
  SetSoapFault( "GetPedidoPeca" , STR0010 ) //"Pedido nao encontrado"

  BREAK
 EndIF

 ::tGetPedido  := WsClassNew( "tGetPedidoCab" )

 GetPVHeader( @::tGetPedido , @cSC5Alias )

 SC6->( dbSetOrder( RetOrder( "SC6" , "C6_FILIAL+C6_NUM+C6_ITEM+C6_PRODUTO" ) ) )

 #IFDEF TOP

     cSC6Alias := GetNextAlias()

  BEGINSQL ALIAS cSC6Alias
   COLUMN C6_DATFAT AS DATE
   SELECT 
    SC6.C6_FILIAL,

    SC6.C6_NUM,
    SC6.C6_ITEM,
    SC6.C6_PRODUTO,
    SC6.C6_DESCRI,
    SC6.C6_UM,

    SC6.C6_QTDVEN,
    SC6.C6_PRCVEN,
    SC6.C6_VALOR,
    SC6.C6_TES,
    SC6.C6_CF,

    SC6.C6_LOCAL,
    SC6.C6_QTDLIB,
    SC6.C6_QTDENT,
    SC6.C6_SERIE,
    SC6.C6_NOTA,

    SC6.C6_DATFAT,
    SC6.C6_BLQ
   FROM
    %table:SC6% SC6
   WHERE
    SC6.%NotDel% AND
    SC6.C6_FILIAL = %exp:cSC6Filial% AND
    SC6.C6_NUM  = %exp:(cNumPedido)%

   ORDER BY
    SC6.C6_FILIAL,SC6.C6_NUM,SC6.C6_ITEM,SC6.C6_PRODUTO
  ENDSQL

  lSC6Query := ( Select( cSC6Alias ) > 0 )

  IF !( lSC6Query )
   ( cSC6Alias )->( dbSeek( cSC6Filial + cNumPedido , .F. ) )

  EndIF

 #ELSE

  SC6->( dbSeek( cSC6Filial + cNumPedido , .F. ) )

 #ENDIF

 ::tGetPedido:tzItensDoPedido  := {}

 ::tGetPedido:tzValorTotalDoPedido := 0
 
 While ( cSC6Alias )->(;

       !Eof();
       .and.;
       ( cSC6Filial == C6_FILIAL );

       .and.;
       ( ( cSC5Alias )->C5_NUM == C6_NUM );

      ) 

  aAdd( ::tGetPedido:tzItensDoPedido , WSClassNew( "tGetPedidoDet" ) )

  
  GetPVItem( @::tGetPedido:tzItensDoPedido[++nItem] , cSC6Alias )

  SC9->( dbSetOrder( RetOrder( "SC9" , "C9_FILIAL+C9_PEDIDO+C9_ITEM" ) ) )

  IF SC9->( dbSeek( cSC9Filial + cNumPedido + ::tGetPedido:tzItensDoPedido[nItem]:ItemPedido , .F. ) )

   ::tGetPedido:tzItensDoPedido[nItem]:tzStatusPedido := WsClassNew( "tStatusPedido" )

   Do Case
    Case Empty( SC9->C9_BLCRED )
     ::tGetPedido:tzItensDoPedido[nItem]:tzStatusPedido:BloqCredito := STR0014 //"Liberado"

    Case ( SC9->C9_BLCRED == "01" )                  
     ::tGetPedido:tzItensDoPedido[nItem]:tzStatusPedido:BloqCredito := STR0015 //"01 - Bloqueio de Credito por Valor"

    Case ( SC9->C9_BLCRED == "04" )                   
     ::tGetPedido:tzItensDoPedido[nItem]:tzStatusPedido:BloqCredito := STR0016 //"04 - Vencto do Limite de Credito - Data de Credito Vencida"

    Case ( SC9->C9_BLCRED == "05" )                   
     ::tGetPedido:tzItensDoPedido[nItem]:tzStatusPedido:BloqCredito := STR0017 //"05 - Bloqueio de Credito por Estorno"

    Case ( SC9->C9_BLCRED == "06" )                   
     ::tGetPedido:tzItensDoPedido[nItem]:tzStatusPedido:BloqCredito := STR0018 //"06 - Bloqueio de Credito por Risco"

    Case ( SC9->C9_BLCRED == "09" )                   
     ::tGetPedido:tzItensDoPedido[nItem]:tzStatusPedido:BloqCredito := STR0019 //"09 - Rejeicao de Credito - Regeitado Manualmente"

    Case ( SC9->C9_BLCRED == "10" )                   
     ::tGetPedido:tzItensDoPedido[nItem]:tzStatusPedido:BloqCredito := STR0020 //"10 - FATURADO"

   End Case  
   
   Do Case
    Case Empty( SC9->C9_BLEST )
     ::tGetPedido:tzItensDoPedido[nItem]:tzStatusPedido:BloqEstoque := STR0021 //"Liberado"

    Case ( SC9->C9_BLEST == "02" )                  
     ::tGetPedido:tzItensDoPedido[nItem]:tzStatusPedido:BloqEstoque := STR0022 // "02 - Bloqueio de Estoque"

    Case ( SC9->C9_BLEST == "03" )                   
     ::tGetPedido:tzItensDoPedido[nItem]:tzStatusPedido:BloqEstoque := STR0023 // "03 - Bloqueio Manual de Estoque"

    Case ( SC9->C9_BLEST == "10" )                   
     ::tGetPedido:tzItensDoPedido[nItem]:tzStatusPedido:BloqEstoque := STR0024 // "10 - FATURADO"

   End Case  
   
   Do Case
    Case ( SC9->C9_BLEST == "01" )
     ::tGetPedido:tzItensDoPedido[nItem]:tzStatusPedido:BloqueioWMS := STR0025 //"01 - Bloqueio de Enderecamento do WMS/Somente SB2"

    Case ( SC9->C9_BLEST == "02" )
     ::tGetPedido:tzItensDoPedido[nItem]:tzStatusPedido:BloqueioWMS := STR0026 //"02 - Bloqueio de Enderecamento do WMS"

    Case ( SC9->C9_BLEST == "03" )                   
     ::tGetPedido:tzItensDoPedido[nItem]:tzStatusPedido:BloqueioWMS := STR0027 //"03 - Bloqueio de WMS - Externo"

    Case ( SC9->C9_BLEST == "05" )                   
     ::tGetPedido:tzItensDoPedido[nItem]:tzStatusPedido:BloqueioWMS := STR0028 //"05 - Liberacao para Bloqueio 01"

    Case ( SC9->C9_BLEST == "06" )                   
     ::tGetPedido:tzItensDoPedido[nItem]:tzStatusPedido:BloqueioWMS := STR0029 //"06 - Liberacao para Bloqueio 02"

    Case ( SC9->C9_BLEST == "07" )                   
     ::tGetPedido:tzItensDoPedido[nItem]:tzStatusPedido:BloqueioWMS := STR0030 //"07 - Liberacao para Bloqueio 03"

   End Case  
  
  EndIF
  
  ::tGetPedido:tzValorTotalDoPedido += ::tGetPedido:tzItensDoPedido[nItem]:ValorTotalDoProduto

  ( cSC6Alias )->( dbSkip() )

 End While

 #IFDEF TOP
  IF ( lSC6Query )
   IF ( Select( cSC6Alias ) > 0 )

    ( cSC6Alias )->( dbCloseArea() )
   EndIF

   dbSelectArea( "SC6" )
  EndIF
 #ENDIF 

END SEQUENCE

RestArea(aAreaSC9)

RestArea(aArea)

RESET ENVIRONMENT

Return( lReturn )

/*/
ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿
³WSMETHOD  ³GetPVHeader            ³Autor³Marinaldo de Jesus &³Data ³01/07/2010³
³          ³                       ³     ³Carla (amor) Soneta ³     ³          ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´
³Descri‡…o ³Consulta ao Cabecalho do Pedido de Venda         ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³Sintaxe   ³<vide parametros formais>              ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³Parametros³<vide parametros formais>                 ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³Uso       ³WebService Pedido                            ³
ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ/*/

Static Function GetPVHeader( oObj , cSC5Alias )

oObj:NumPedidoVenda   := (cSC5Alias)->C5_NUM
oObj:TipoDePedido   := (cSC5Alias)->C5_TIPO
oObj:CodCliente    := (cSC5Alias)->C5_CLIENTE
oObj:CodLojaCliente   := (cSC5Alias)->C5_LOJACLI
oObj:CodClienteEntrega  := (cSC5Alias)->C5_CLIENT
oObj:CodLojaEntrega   := (cSC5Alias)->C5_LOJAENT
oObj:NomeDoCliente   := (cSC5Alias)->C5_NOMECLI
oObj:TransportadoraCliente := (cSC5Alias)->C5_TRANSP
oObj:TipoDeCliente   := (cSC5Alias)->C5_TIPOCLI
oObj:CondicaoPagamento  := (cSC5Alias)->C5_CONDPAG
oObj:EmissaoPedido   := (cSC5Alias)->C5_EMISSAO
oObj:TipoDeFrete   := (cSC5Alias)->C5_TPFRETE
oObj:MoedaDoPedido   := (cSC5Alias)->C5_MOEDA
oObj:IssIncluidoPreco  := (cSC5Alias)->C5_INCISS
oObj:TipoDeLiberacaoPedido := (cSC5Alias)->C5_TIPLIB


Return( .T. )

/*/
ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿
³WSMETHOD  ³GetPVItem              ³Autor³Marinaldo de Jesus &³Data ³01/07/2010³
³          ³                       ³     ³Carla (amor) Soneta ³     ³          ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´
³Descri‡…o ³Consulta ao Itens do Pedido de Venda          ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³Sintaxe   ³<vide parametros formais>              ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³Parametros³<vide parametros formais>                 ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³Uso       ³WebService Pedido                            ³
ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ/*/

Static Function GetPVItem( oObj , cSC6Alias )

oObj:ItemPedido    := ( cSC6Alias )->C6_ITEM
oObj:ProdutoPedido   := ( cSC6Alias )->C6_PRODUTO
oObj:DescricaoProduto  := ( cSC6Alias )->C6_DESCRI
oObj:UnidadeMedida   := ( cSC6Alias )->C6_UM
oObj:QuantidadeProduto  := ( cSC6Alias )->C6_QTDVEN
oObj:PrecoVendaProduto  := ( cSC6Alias )->C6_PRCVEN
oObj:ValorTotalDoProduto := ( cSC6Alias )->C6_VALOR
oObj:TipoDeEntradaSaida  := ( cSC6Alias )->C6_TES
oObj:CFOP     := ( cSC6Alias )->C6_CF
oObj:Armazem    := ( cSC6Alias )->C6_LOCAL
oObj:QuantidadeLiberada  := ( cSC6Alias )->C6_QTDLIB
oObj:QuantidadeEntregue  := ( cSC6Alias )->C6_QTDENT
oObj:SerieNF    := ( cSC6Alias )->C6_SERIE
oObj:NotaFiscal    := ( cSC6Alias )->C6_NOTA
oObj:DataUltimoFaturamento := ( cSC6Alias )->C6_DATFAT
oObj:Bloqueio    := ( cSC6Alias )->C6_BLQ


Return( .T. )

/*/
ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿
³WSMETHOD  ³GetPedidoKeyPeca       ³Autor³Marinaldo de Jesus &³Data ³01/07/2010³
³          ³                       ³     ³Carla (amor) Soneta ³     ³          ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´
³Descri‡…o ³Consulta a Lista de Pedido(s) de Venda(s) Por Período e CNPJ    ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³Sintaxe   ³<vide parametros formais>              ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³Parametros³<vide parametros formais>                 ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³Uso       ³WebService Pedido                            ³
ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ/*/

WSMETHOD GetPedidoKeyPeca WSRECEIVE CNPJ,dIniConsulta,dFimConsulta WSSEND tGetPedidoKey WSSERVICE WsPedidoServicePeca

Local aArea    := {}

Local cSC5Alias   := "SC5"

Local cSC6Alias   := "SC6"
Local cSA1Filial  := ""
Local cSC5Filial  := ""

Local cSC6Filial  := ""
Local cSC9Filial  := ""
Local cLojaCliente  := ""

Local cCodigoCliente := ""

Local dDataAux   := Ctod("//")

Local dIniConsulta  := Ctod("//")
Local dFimConsulta  := Ctod("//")

Local lReturn   := .T.
Local lSetCentury

Local nItemCab   := 0

Local nItemDet   := 0

#IFDEF TOP
 Local lSC5Query  := .F.
 Local lSC6Query  := .F.
#ENDIF

RpcSetType(3)
IF FindFunction("WfPrepEnv")
 WfPrepEnv("01","03")

Else
 PREPARE ENVIRONMENT EMPRESA "01" FILIAL "03"
EndIF

SetsDefault()
lSetCentury    := __SetCentury("on")

aArea     := GetArea()
cSA1Filial    := xFilial( "SA1" )

cSC5Filial    := xFilial( "SC5" , cSA1Filial )
cSC6Filial    := xFilial( "SC6" , cSC5Filial )

cSC9Filial    := xFilial( "SC9" , cSC6Filial )

BEGIN SEQUENCE

 DEFAULT ::dIniConsulta := FirstDay( dDataBase )

 DEFAULT ::dFimConsulta := LastDay( dDataBase )

 dIniConsulta   := ::dIniConsulta
 dFimConsulta   := ::dFimConsulta

 IF (;

   !( ValType( dIniConsulta ) ==  "D" );

   .or.;
   Empty( dIniConsulta );
  )

  dIniConsulta := FirstDay( dDataBase )
 EndIF  

 IF (;

   !( ValType( dFimConsulta ) ==  "D" );

   .or.;
   Empty( dFimConsulta );
  )

  dFimConsulta := LastDay( dDataBase )
 EndIF
 
 IF ( dFimConsulta < dIniConsulta )

  dDataAux   := dIniConsulta
  dIniConsulta := dFimConsulta
  dFimConsulta := dDataAux
 EndIF

 IF Empty(::CNPJ)
  lReturn := .F.
  SetSoapFault( "GetPedidoKeyPeca" , STR0006 ) //""Cliente invÁlido"

  BREAK
 EndIF

 ::CNPJ := UnMaskCNPJ( ::CNPJ )

 SA1->( dbSetOrder( RetOrder( "SA1" , "A1_FILIAL+A1_CGC" ) ) )

 IF SA1->( !dbSeek( cSA1Filial + ::CNPJ , .F. ) )

  lReturn := .F.
  SetSoapFault( "GetPedidoKeyPeca" , STR0007 + " " + cSA1Filial + TransForm( ::CNPJ , GetSx3Cache( "A1_CGC" , "X3_PICTURE" ) ) ) //"CNPJ invÁlido"

  BREAK
 EndIF

 cLojaCliente := SA1->A1_LOJA
 cCodigoCliente := SA1->A1_COD 

 SC5->( dbSetOrder( RetOrder( "SC5" , "C5_FILIAL+C5_CLIENTE+C5_LOJACLI+C5_NUM" ) ) )

 #IFDEF TOP

     cSC5Alias := GetNextAlias()

  BEGINSQL ALIAS cSC5Alias
   COLUMN C5_EMISSAO AS DATE 
   SELECT 
    SC5.C5_FILIAL,

    SC5.C5_NUM,
    SC5.C5_TIPO,
    SC5.C5_CLIENTE,
    SC5.C5_CLIENTE,
    SC5.C5_LOJACLI,

    SC5.C5_CLIENT,
    SC5.C5_LOJAENT,
    SC5.C5_CONDPAG,
    SC5.C5_EMISSAO,
    SC5.C5_INCISS,

    SC5.C5_MOEDA,
    SC5.C5_NOMECLI,
    SC5.C5_TIPOCLI,
    SC5.C5_TPFRETE,
    SC5.C5_TIPLIB,

    SC5.C5_TRANSP
   FROM
    %table:SC5% SC5
   WHERE
    SC5.%NotDel% AND
    SC5.C5_FILIAL = %exp:cSC5Filial% AND
    SC5.C5_CLIENTE = %exp:cCodigoCliente% AND
    SC5.C5_LOJACLI = %exp:cLojaCliente% AND
    SC5.C5_EMISSAO >= %exp:Dtos(dIniConsulta)% AND
    SC5.C5_EMISSAO <= %exp:Dtos(dFimConsulta)%

   ORDER BY
    SC5.C5_FILIAL,SC5.C5_CLIENTE,SC5.C5_LOJACLI,SC5.C5_NUM
  ENDSQL
  
  lSC5Query := ( Select( cSC5Alias ) > 0 )

  IF !( lSC5Query )
   ( cSC5Alias )->( dbSeek( cSC5Filial + cCodigoCliente + cLojaCliente , .F. ) )

  EndIF
 
 #ELSE

     ( cSC5Alias )->( dbSeek( cSC5Filial + cCodigoCliente + cLojaCliente , .F. ) )

 #ENDIF

 ::tGetPedidoKey := {}

 While ( cSC5Alias )->(;
        !Eof();

        .and.;
        ( C5_FILIAL == cSC5Filial );

        .and.;
        ( C5_CLIENTE == cCodigoCliente );

        .and.;
        ( C5_LOJACLI == cLojaCliente );

       ) 

  #IFDEF TOP
   IF !( lSC5Query )  
    IF ( cSC5Alias )->( C5_EMISSAO < dIniConsulta .or. C5_EMISSAO > dFimConsulta )

     ( cSC5Alias )->( dbSkip() )
     Loop
    EndIF

   EndIF 
  #ELSE
   IF ( cSC5Alias )->( C5_EMISSAO < dIniConsulta .or. C5_EMISSAO > dFimConsulta )

    ( cSC5Alias )->( dbSkip() )
    Loop
   EndIF

  #ENDIF 

  aAdd( ::tGetPedidoKey , WsClassNew( "tGetPedidoCab" ) )

  GetPVHeader( @::tGetPedidoKey[++nItemCab] , @cSC5Alias )

  SC6->( dbSetOrder( RetOrder( "SC6" , "C6_FILIAL+C6_NUM+C6_ITEM+C6_PRODUTO" ) ) )

  #IFDEF TOP

      cSC6Alias := GetNextAlias()

   BEGINSQL ALIAS cSC6Alias
    COLUMN C6_DATFAT AS DATE 
    SELECT 
     SC6.C6_FILIAL,

     SC6.C6_NUM,
     SC6.C6_ITEM,
     SC6.C6_PRODUTO,
     SC6.C6_DESCRI,
     SC6.C6_UM,

     SC6.C6_QTDVEN,
     SC6.C6_PRCVEN,
     SC6.C6_VALOR,
     SC6.C6_TES,
     SC6.C6_CF,

     SC6.C6_LOCAL,
     SC6.C6_QTDLIB,
     SC6.C6_QTDENT,
     SC6.C6_SERIE,
     SC6.C6_NOTA,

     SC6.C6_DATFAT,
     SC6.C6_BLQ
    FROM
     %table:SC6% SC6
    WHERE
     SC6.%NotDel% AND
     SC6.C6_FILIAL = %exp:cSC6Filial% AND
     SC6.C6_NUM  = %exp:( cSC5Alias )->C5_NUM%

    ORDER BY
     SC6.C6_FILIAL,SC6.C6_NUM,SC6.C6_ITEM,SC6.C6_PRODUTO
   ENDSQL

   lSC6Query := ( Select( cSC6Alias ) > 0 )

 
   IF !( lSC6Query )
    ( cSC6Alias )->( dbSeek( cSC6Filial + ( cSC5Alias )->C5_NUM , .F. ) )

   EndIF
  
  #ELSE
 
      ( cSC6Alias )->( dbSeek( cSC6Filial + ( cSC5Alias )->C5_NUM , .F. ) )

 
  #ENDIF

  ::tGetPedidoKey[nItemCab]:tzItensDoPedido  := {}

 
  ::tGetPedidoKey[nItemCab]:tzValorTotalDoPedido := 0
  
  nItemDet          := 0

  While ( cSC6Alias )->(;
        !Eof();

        .and.;
        ( cSC6Filial == C6_FILIAL );

        .and.;
        ( ( cSC5Alias )->C5_NUM == C6_NUM );

       ) 
 
   aAdd( ::tGetPedidoKey[nItemCab]:tzItensDoPedido , WSClassNew( "tGetPedidoDet" ) )

   
   GetPVItem( @::tGetPedidoKey[nItemCab]:tzItensDoPedido[++nItemDet] , cSC6Alias )

 
   SC9->( dbSetOrder( RetOrder( "SC9" , "C9_FILIAL+C9_PEDIDO+C9_ITEM" ) ) )

   IF SC9->( dbSeek( cSC9Filial + ( cSC5Alias )->C5_NUM + ::tGetPedidoKey[nItemCab]:tzItensDoPedido[nItemDet]:ItemPedido , .F. ) )

 
    ::tGetPedidoKey[nItemCab]:tzItensDoPedido[nItemDet]:tzStatusPedido := WsClassNew( "tStatusPedido" )

 
    Do Case
     Case Empty( SC9->C9_BLCRED )
      ::tGetPedidoKey[nItemCab]:tzItensDoPedido[nItemDet]:tzStatusPedido:BloqCredito := STR0014 //"Liberado"

     Case ( SC9->C9_BLCRED == "01" )                  
      ::tGetPedidoKey[nItemCab]:tzItensDoPedido[nItemDet]:tzStatusPedido:BloqCredito := STR0015 //"01 - Bloqueio de Credito por Valor"

     Case ( SC9->C9_BLCRED == "04" )                   
      ::tGetPedidoKey[nItemCab]:tzItensDoPedido[nItemDet]:tzStatusPedido:BloqCredito := STR0016 //"04 - Vencto do Limite de Credito - Data de Credito Vencida"

     Case ( SC9->C9_BLCRED == "05" )                   
      ::tGetPedidoKey[nItemCab]:tzItensDoPedido[nItemDet]:tzStatusPedido:BloqCredito := STR0017 //"05 - Bloqueio de Credito por Estorno"

     Case ( SC9->C9_BLCRED == "06" )                   
      ::tGetPedidoKey[nItemCab]:tzItensDoPedido[nItemDet]:tzStatusPedido:BloqCredito := STR0018 //"06 - Bloqueio de Credito por Risco"

     Case ( SC9->C9_BLCRED == "09" )                   
      ::tGetPedidoKey[nItemCab]:tzItensDoPedido[nItemDet]:tzStatusPedido:BloqCredito := STR0019 //"09 - Rejeicao de Credito - Regeitado Manualmente"

     Case ( SC9->C9_BLCRED == "10" )                   
      ::tGetPedidoKey[nItemCab]:tzItensDoPedido[nItemDet]:tzStatusPedido:BloqCredito := STR0020 //"10 - FATURADO"

    End Case  
    
    Do Case
     Case Empty( SC9->C9_BLEST )
      ::tGetPedidoKey[nItemCab]:tzItensDoPedido[nItemDet]:tzStatusPedido:BloqEstoque := STR0021 //"Liberado"

     Case ( SC9->C9_BLEST == "02" )                  
      ::tGetPedidoKey[nItemCab]:tzItensDoPedido[nItemDet]:tzStatusPedido:BloqEstoque := STR0022 // "02 - Bloqueio de Estoque"

     Case ( SC9->C9_BLEST == "03" )                   
      ::tGetPedidoKey[nItemCab]:tzItensDoPedido[nItemDet]:tzStatusPedido:BloqEstoque := STR0023 // "03 - Bloqueio Manual de Estoque"

     Case ( SC9->C9_BLEST == "10" )                   
      ::tGetPedidoKey[nItemCab]:tzItensDoPedido[nItemDet]:tzStatusPedido:BloqEstoque := STR0024 // "10 - FATURADO"

    End Case  
    
    Do Case
     Case ( SC9->C9_BLEST == "01" )
      ::tGetPedidoKey[nItemCab]:tzItensDoPedido[nItemDet]:tzStatusPedido:BloqueioWMS := STR0025 //"01 - Bloqueio de Enderecamento do WMS/Somente SB2"

     Case ( SC9->C9_BLEST == "02" )
      ::tGetPedidoKey[nItemCab]:tzItensDoPedido[nItemDet]:tzStatusPedido:BloqueioWMS := STR0026 //"02 - Bloqueio de Enderecamento do WMS"

     Case ( SC9->C9_BLEST == "03" )                   
      ::tGetPedidoKey[nItemCab]:tzItensDoPedido[nItemDet]:tzStatusPedido:BloqueioWMS := STR0027 //"03 - Bloqueio de WMS - Externo"

     Case ( SC9->C9_BLEST == "05" )                   
      ::tGetPedidoKey[nItemCab]:tzItensDoPedido[nItemDet]:tzStatusPedido:BloqueioWMS := STR0028 //"05 - Liberacao para Bloqueio 01"

     Case ( SC9->C9_BLEST == "06" )                   
      ::tGetPedidoKey[nItemCab]:tzItensDoPedido[nItemDet]:tzStatusPedido:BloqueioWMS := STR0029 //"06 - Liberacao para Bloqueio 02"

     Case ( SC9->C9_BLEST == "07" )                   
      ::tGetPedidoKey[nItemCab]:tzItensDoPedido[nItemDet]:tzStatusPedido:BloqueioWMS := STR0030 //"07 - Liberacao para Bloqueio 03"

    End Case  
   
   EndIF
   
   ::tGetPedidoKey[nItemCab]:tzValorTotalDoPedido += ::tGetPedidoKey[nItemCab]:tzItensDoPedido[nItemDet]:ValorTotalDoProduto
 
   ( cSC6Alias )->( dbSkip() )

 
  End While
 
  #IFDEF TOP
   IF ( lSC6Query )
    IF ( Select( cSC6Alias ) > 0 )

     ( cSC6Alias )->( dbCloseArea() )
    EndIF

    dbSelectArea( "SC6" )
   EndIF
  #ENDIF 

  ( cSC5Alias )->( dbSkip() )

 End While

 IF ( lSC5Query )
  IF ( Select( cSC5Alias ) > 0 )

   ( cSC5Alias )->( dbCloseArea() )
   dbSelectArea( "SC5" )

  EndIF
 EndIF

 IF Empty( ::tGetPedidoKey )

  SetSoapFault( "GetPedidoKeyPeca" ,;
           STR0031; //"Não Existem Pedidos para o Cliente CNPJ: "
           +;

           TransForm( ::CNPJ , GetSx3Cache( "A1_CGC" , "X3_PICTURE" ) );

           +;
           " ";
           +;
           STR0032; //"No Período Informado: "

           +;
           Dtoc( dIniConsulta , "DDMMYYYY" );
           +;

           " - ";
           +;
           Dtoc( dFimConsulta , "DDMMYYYY" );

       ) 
  lReturn := .F.
  BREAK
 EndIF
 
END SEQUENCE

RestArea( aArea )

IF !( lSetCentury )
 __SetCentury("off")
EndIF

RESET ENVIRONMENT

Return( lReturn )

/*/
ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿
³Funcao    ³UnMaskCNPJ             ³Autor³Marinaldo de Jesus &³Data ³01/07/2010³
³          ³                       ³     ³Carla (amor) Soneta ³     ³          ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´
³Descri‡…o ³Limpar o Conteudo do CNPJ             ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³Sintaxe   ³<vide parametros formais>              ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³Parametros³<vide parametros formais>                 ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³Uso       ³WebService Pedido                            ³
ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ/*/

Static Function UnMaskCNPJ( cCNPJ )

Local cCNPJClear := cCNPJ

BEGIN SEQUENCE
 
 IF Empty( cCNPJClear )

  BREAK
 EndIF

 cCNPJClear := StrTran( cCNPJClear , "." , "" )

 cCNPJClear := StrTran( cCNPJClear , "/" , "" )

 cCNPJClear := StrTran( cCNPJClear , "-" , "" )

 
 cCNPJClear := AllTrim( cCNPJClear )

END SEQUENCE

Return( cCNPJClear )
      







Com preguiça de digitar tudo novamente? Quer ver o funcionamento do código. Então baixe-o clicando aqui

[]s
иαldσ

10 comentários:

  1. Boa noite, Naldo. Parabéns pelo seu blog... trabalho a alguns anos com suporte Totvs em Santa Catarina e acabei de encontrar sua pagina achei o material que vc tem postado aqui muito bom. Estava olhando o fonte do webservice para rotina mata410 e gostaria de saber como se faz para consumir um webservice do Protheus10 em um sistema desenvolvido em .Net já tenho um portal de vendedor rodando on-line e a aplicação em .net seria utilizada em modo off-line transmitindo os pedidos para inclusão pelo serviço MATA410WS.
    []s
    Muryell

    ResponderExcluir
  2. Bom dia Naldo. Essa informação de WebService poderia ser bem útil pra mim caso eu entendesse boa parte dele rsrs, estou começando os estudos em ADVPL. Bem preciso de ajuda se puder eu agradeço. Estou implantando o Fluig e segui um tutorial da Totvs de integração com o Protheus. Infelizmente esta dando erro de retorno que ninguém que eu conheça no momento conseguiu me ajudar. Após fazer todas as configurações necessárias para relizar a comunicação de um pedido de compras realizados no Protheus ser criado também no Fluig, no momento que o ponto de entrada tenta incluir (acho eu que está tentando incluir) ele retorna erro. Abri 2 chamados na Totvs e não obtive retorno satisfatório. Se precisar tenho os fontes que usei a apostila de tutorial, os XMLs, espero que possa me ajudar, pois já tentei com Totvs, Master ADVPL, Super RP, e outros desenvolvedores da empresa onde trabalho. Mas ninguem tem a menor ideia de como resolver, imagina eu que ainda não conheço direito ADVPL (Mas estou me esforçando muito para conseguir uma solução). Segue meu e-mail. cjesus@totalitsolutions.com.br e celiojesussilva@yahoo.com.br

    ResponderExcluir
  3. Este comentário foi removido pelo autor.

    ResponderExcluir
  4. Olá!
    Gostaria de saber o que mais preciso para carregar a página.
    É preciso algum serviço no INI? Ou ISS?
    Grata

    ResponderExcluir
  5. Oi,
    Gostaria de saber como carrego a página.
    Preciso ter algum serviço no INI ou ISS?
    Grata

    ResponderExcluir
  6. Olá Naldo,
    Você tem algum webservice para inclusão de solicitação de compras no protheus?
    Obrigada.
    Danuzia

    ResponderExcluir
  7. Olá Naldo,
    Você tem algum webservice para inclusão de solicitação de compras no protheus?
    Obrigada.
    Danuzia

    ResponderExcluir
  8. Boa tarde, como funciona a autenticação para consumir servicos no protheus?

    ResponderExcluir