#INCLUDE "protheus.ch" #INCLUDE "rwmake.ch" #INCLUDE "TBICONN.CH" User Function ImportaPed() Private aCabec := {} Private aItens := {} Private nX Private N := 1 Private aErros := {} Private lMsErroAuto := .F. Private lMsHelpAuto := .T. Private cTipoOper := "" Private nFilial Private nFil Private nNumsim Private nCliente Private nLoja Private cItem Private cLog Private cFrete Private aPedImp := {} Private cCampoErr := "" Private cTes // ---------- BUSCA OS PEDIDOS ---------------------- // cQuery := "SELECT * " cQuery += "FROM SZ0010 SZ0 " cQuery += "WHERE SZ0.D_E_L_E_T_=' ' " cQuery += "AND Z0_FLAG = '1' " cQuery += "ORDER BY Z0_LANCDT" If Select("QR1") <> 0 DBSelectArea("QR1") DBCloseArea() Endif //aviso("SQL", cQuery, {"Ok"}, 3) cQuery := ChangeQuery(cQuery) // otimiza a query de acordo c/ o banco //TCQUERY cQuery ALIAS "QR1" NEW VIA "TOPCONN" dbUseArea(.T.,"TOPCONN",TcGenQry(,,cQuery),"QR1",.T.,.T.) While QR1->(!Eof()) U_ImpriPed() QR1->(dbSkip()) EndDo Return User Function ImpriPed aCabec := {} aItens := {} nFilial := Substr(QR1->Z0_UNIDADE,10,2) nCliente := Substr(QR1->Z0_CLIENTE,1,6) nLoja := Substr(QR1->Z0_CLIENTE,8,4) cFrete := Substr(QR1->Z0_TPFRETE,1,1) nFil := QR1->Z0_UNIDADE nNumsim := QR1->Z0_NUMSIM aAdd(aCabec, {"C5_FILIAL", nFilial ,Nil}) // Filial aAdd(aCabec, {"C5_TIPO", "N" ,Nil}) // Tipo do Pedido aAdd(aCabec, {"C5_CLIENTE",nCliente ,Nil}) // Codigo do Cliente aAdd(aCabec, {"C5_LOJACLI",nLoja ,Nil}) // Loja do Cliente aAdd(aCabec, {"C5_TPFRETE",cFrete ,Nil}) // Frete aAdd(aCabec, {"C5_TABELA", QR1->Z0_TABELA ,Nil}) // Tabela aAdd(aCabec, {"C5_PDESCAB",QR1->Z0_PDESCAB ,nil}) // Campo do Desconto aAdd(aCabec, {"C5_CONDPAG",QR1->Z0_CONDPAG ,Nil}) // Condicao de pagamanto aAdd(aCabec, {"C5_FORPAG", QR1->Z0_FORPAG ,Nil}) // Forma de pagamanto aAdd(aCabec, {"C5_DATA1", sTod(QR1->Z0_DATA1),Nil}) // Data Parcela aAdd(aCabec, {"C5_PARC1", QR1->Z0_PARC1 ,Nil}) // Parcela aAdd(aCabec, {"C5_DATA2", sTod(QR1->Z0_DATA2),Nil}) // Data Parcela aAdd(aCabec, {"C5_PARC2", QR1->Z0_PARC2 ,Nil}) // Parcela aAdd(aCabec, {"C5_DATA3", sTod(QR1->Z0_DATA3),Nil}) // Data Parcela aAdd(aCabec, {"C5_PARC3", QR1->Z0_PARC3 ,Nil}) // Parcela aAdd(aCabec, {"C5_DATA4", sTod(QR1->Z0_DATA4),Nil}) // Data Parcela aAdd(aCabec, {"C5_PARC4", QR1->Z0_PARC4 ,Nil}) // Parcela aAdd(aCabec, {"C5_DATA5", sTod(QR1->Z0_DATA5),Nil}) // Data Parcela aAdd(aCabec, {"C5_PARC5", QR1->Z0_PARC5 ,Nil}) // Parcela aAdd(aCabec, {"C5_DATA6", sTod(QR1->Z0_DATA6),Nil}) // Data Parcela aAdd(aCabec, {"C5_PARC6", QR1->Z0_PARC6 ,Nil}) // Parcela aAdd(aCabec, {"C5_MENNOTA",QR1->Z0_MENNOTA, nil}) aAdd(aCabec, {"C5_XMENSAG",QR1->Z0_XMENSAG, nil}) aAdd(aCabec, {"C5_EMISSAO",dDatabase ,Nil}) // Data de Emissao aAdd(aCabec, {"C5_VEND1", QR1->Z0_USUARIO ,Nil}) // Vendedor aAdd(aCabec, {"C5_NUMSIM", QR1->Z0_NUMSIM ,Nil}) // Numero S // -------- CONTA OS PRODUTOS DO PEDIDO ------- // cQuery := "SELECT COUNT(Z1_PRODUTO) Z1_PRODUTO " cQuery += "FROM SZ1010 SZ1 " cQuery += "WHERE Z1_FILIAL = '" + QR1->Z0_UNIDADE + "' " cQuery += " AND Z1_NUMSIM = '"+cValtoChar(QR1->Z0_NUMSIM)+"' " cQuery += " AND SZ1.D_E_L_E_T_=' ' " cQuery += " ORDER BY Z1_PRODUTO" If Select("QR3") <> 0 DBSelectArea("QR3") DBCloseArea() Endif //aviso("SQL", cQuery, {"Ok"}, 3) cQuery := ChangeQuery(cQuery) // otimiza a query de acordo c/ o banco dbUseArea(.T.,"TOPCONN",TcGenQry(,,cQuery),"QR3",.T.,.T.) // -------- BUSCA OS PRODUTOS DO PEDIDO ------- // cQuery := "SELECT * " cQuery += "FROM SZ1010 SZ1 " cQuery += "WHERE Z1_FILIAL = '" + QR1->Z0_UNIDADE + "' " cQuery += " AND Z1_NUMSIM = '"+cValtoChar(QR1->Z0_NUMSIM)+"' " cQuery += " AND SZ1.D_E_L_E_T_=' ' " cQuery += " ORDER BY Z1_PRODUTO" If Select("QR4") <> 0 DBSelectArea("QR4") DBCloseArea() Endif //aviso("SQL", cQuery, {"Ok"}, 3) cQuery := ChangeQuery(cQuery) // otimiza a query de acordo c/ o banco dbUseArea(.T.,"TOPCONN",TcGenQry(,,cQuery),"QR4",.T.,.T.) cItem := "01" For Nx:=1 TO QR3->Z1_PRODUTO cTipoOper := U_TipoOpera(QR4->Z1_TES) Aadd(aItens,{{"C6_ITEM",cItem,Nil},; // Numero do Item no Pedido {"C6_PRODUTO", "000445",Nil},; // Codigo do Produto {"C6_QTDVEN", QR4->Z1_QTDVEN ,Nil},; //QR4->Z1_QTDVEN {"C6_PRCVEN", QR4->Z1_VLRUNIT,Nil},; {"C6_PRUNIT", QR4->Z1_VLRUNIT,Nil},; {"C6_OPER", IIf(N==2,"57",cTipoOper) ,Nil},; {"C6_TES", IIf(N==2,"521",QR4->Z1_TES) ,Nil},; {"C6_CULT", IIf(!Empty(QR4->Z1_CULT),QR4->Z1_CULT," "),Nil},; {"C6_DESCONT", QR4->Z1_DESCONT,Nil},; {"C6_VALDESC", QR4->Z1_VALDESC,Nil},; {"C6_NUMSIM", QR4->Z1_NUMSIM ,Nil}}) cItem := Val(cItem) + 1 cItem := StrZero(cItem, 2, 0) cItem := cValtoChar(cItem) QR4->(dbSkip()) Next Nx MsExecAuto({|x, y, z| MATA410(x, y, z)}, aCabec, aItens, 3) // MATA410(aCabec, aItens, 3) Return User Function TipoOpera(cTipo) If AllTrim(cTipo) == '509' //PEDIDO NORMAL cTipo := '53' ElseIf AllTrim(cTipo) == '512' //PEDIDO VENDA ENTREGA FUTURA cTipo := '55' ElseIf AllTrim(cTipo) == '647' //PEDIDO BONIFICACAO cTipo := '36' Else // PEDIDO DEVOLUCAO cTipo := '47' EndIf Return(cTipo)