- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- integração de outro sistema com o protheus
×
Linguagem de Programação ADVPL
Perguntas integração de outro sistema com o protheus
- tonitosbass
- Autor do Tópico
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 8
- Obrigados Recebidos: 0
10 anos 6 meses atrás - 10 anos 6 meses atrás #22573
por tonitosbass
PESSOAL GOSTARIA DE UMA AJUDA PARA FINALIZAR E CORRIGIR O PROCESSO DO ABAIXO. O INTUITO DESTE FONTE É ACESSAR O BANCO DE DADOS DE OUTRO SISTEMA E INTEGRAR OS DADOS COM O PROTHEUS, OU SEJA, TODOS OS DADOS QUE ESTÃO NO OUTRO SISTEMA DEVEM SER CARREGADOS NO PROTHEUS NO MODULO DOS LIVROS FISCAIS NF DE SAIDA.
SEGUE O FONTE ABAIXO.
DESDE JÁ AGRADEÇO.
LEMBRANDO QUE O QUE QUERIA É SOMENTE A INTEGRAÇÃO MESMO, A PARTE DE GERAÇÃO DE PEDIDO DE VENDA,NÃO É NECESSARIO.
#INCLUDE "Protheus.ch"
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºPrograma ³ SGTCON01 º Autor ³ Leonardo-Kichitaro º Data ³ 26/06/2013 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDescricao ³Conecta no banco intermediario para buscar registros para º±±
±±º ³integracao Protheus/ESL. º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso ³SIGLA º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
User Function SGTCON01()
Local cBcoDad := "MSSQL/INTEGRADADOS"
Local cEndIP := "192.168.0.11"
Local nPorta := 7890
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Define as variáveis da rotina ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
Local lRetorno := .T.
Local lFirst := .T.
Local nTotReg1 := 0
Local nPos := 0
Local nAgluADF := 0
Local cEmpArq := ""
Local cArqDes := ""
Local cQuery := ""
Local cCodCli := ""
Local cCodFor := ""
Local cCGC := ""
Local cProduto := ""
Local cRecFil := ""
Local cCond := "001"
Local aFina050 := {}
Local aCabDTP := {}
Local aLoteDTP := {}
Local aRetDTC2 := {}
Local aCabDTC := {}
Local aItemDTC := {}
Local aItem := {}
Local aCab := {}
Local nRadio1 := 0
Private lMsErroAuto := .F.
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Guarda a conexão atual do top ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
nTarget := AdvConnection()
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Obtem a coneção do source ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
nSource := TCLink( cBcoDad, cEndIP, nPorta )
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Verifica se a coneção origem foi bem sucedida ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
If nSource <= 0
If nRadio1 == 1
Aviso( "Copia Dados",;
"Banco/Conexão: " + cBcoDad + "." + CRLF +;
"Endereço IP: " + cEndIP + "." + CRLF +;
"Porta : " + AllTrim( Str( nPorta ) ) + "." + CRLF +;
"Não foi possível efetuar a coneção no servidor de origem.",;
{ "&Retorna" },3,;
"Conexão Falhou" )
Else
GeraLog("","","2","Não foi possível efetuar a conexão no servidor de origem." + CRLF +;
"Banco/Conexão: " + cBcoDad + "." + CRLF +;
"Endereço IP: " + cEndIP + "." + CRLF +;
"Porta : " + AllTrim( Str( nPorta ) ) + ".")
EndIf
lRetorno := .F.
Return( lRetorno )
EndIf
//Valida LICENCIAMENTO do sistema
If DToS(Date())> "20201231"
If nRadio1 == 1
Aviso( "FALHA TÉCNICA."+Chr(13)+Chr(10)+;
"Entre em contato com a equipe de desenvolvimento.",;
{ "&Retorna" },3,;
"Falha Tecnica" )
Else
GeraLog("","","2","FALHA TÉCNICA."+Chr(13)+Chr(10)+;
"Entre em contato com a equipe de desenvolvimento.")
EndIf
lRetorno := .F.
Return( lRetorno )
EndIf
cQuery := " SELECT * FROM DT6 "
cQuery += " WHERE REGTRA = 'I' "
cQuery += " AND DT6_DOCTMS = '1'"
cQuery := ChangeQuery( cQuery )
DbUseArea( .T., 'TOPCONN', TcGenQry(,,cQuery), "TRBDT6", .T., .F. )
TCSetConn( nTarget )
cProduto := PadR("000719",TamSx3("B1_COD")[1])
DbSelectArea("SB1")
DbSetOrder(1)
DbSeek(xFilial("SB1")+cProduto)
DbSelectArea("TRBDT6")
DbGoTop()
While !TRBDT6->(Eof())
If Empty(TRBDT6->DT6_FILDOC)
TRBDT6->(DbSkip())
Loop
EndIf
cRecFil := cFilAnt
cFilAnt := Iif(AllTrim(Upper(TRBDT6->DT6_FILDOC)) == "SP", "02", AllTrim(TRBDT6->DT6_FILDOC))
aCamposSC5 := {}
aCamposSC6 := {}
//Monta o Cabecalho do Pedido de Venda
aCamposSC5 := { {"C5_TIPO" ,"N" ,Nil},; // Tipo de pedido
{"C5_CLIENTE",SA1->A1_COD ,Nil},; // Codigo do cliente
{"C5_LOJACLI",SA1->A1_LOJA ,Nil},; // Loja do cliente
{"C5_EMISSAO",dDatabase ,Nil},; // Data de emissao
{"C5_CONDPAG",cCond ,Nil},; // Codigo da condicao de pagamanto*
{"C5_DESC1" ,0 ,Nil},; // Percentual de Desconto
{"C5_TIPLIB" ,"1" ,Nil},; // Tipo de Liberacao
{"C5_MOEDA" ,1 ,Nil},; // Moeda
{"C5_TIPOCLI","F" ,Nil}} // Tipo Revendedor/Cons.Final etc..
aItemPV := { {"C6_ITEM" ,"01" ,Nil},; // Numero do Item no Pedido
{"C6_PRODUTO",SB1->B1_COD ,Nil},; // Codigo do Produto
{"C6_QTDVEN" ,1 ,Nil},; // Quantidade Vendida
{"C6_PRUNIT" ,TRBDT6->DT6_VALTOT ,Nil},; // Preco Unitario
{"C6_PRCVEN" ,TRBDT6->DT6_VALTOT ,Nil},; // Preco Unitario Liquido
{"C6_VALOR" ,TRBDT6->DT6_VALTOT ,Nil},; // Valor Total do Item
{"C6_TES" ,"530" ,Nil},; // Tipo de Saida (TES)
{"C6_ENTREG" ,dDataBase ,Nil},; // Data da Entrega
{"C6_UM" ,SB1->B1_UM ,Nil},; // Unidade de Medida Primar.
{"C6_LOCAL" ,SB1->B1_LOCPAD ,Nil},; // Almoxarifado
{"C6_COMIS1" ,0 ,Nil},; // Comissao Vendedor
{"C6_CLI" ,SA1->A1_COD ,Nil},; // Cliente
{"C6_LOJA" ,SA1->A1_LOJA ,Nil},; // Loja do Cliente
{"C6_QTDLIB" ,0 ,Nil},; // Quantidade Liberada
{"C6_DESCONT",0 ,Nil} } // Desconto do item
Aadd(aCamposSC6,aItemPV)
Begin Transaction
IF Len(aCamposSC5) > 0 .And. Len(aCamposSC6) > 0
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Gera pedido de venda da transferencia. ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
MSExecAuto({|x,y,z| Mata410(x,y,z)},aCamposSC5,aCamposSC6,3)
If lMsErroAuto
// MostraErro()
DisarmTransaction()
Else
cNumSC5 := SC5->C5_NUM
// MsgAlert(Alltrim(cNumSC5)+" - Pedido de Venda Gerado Com Sucesso!")
DbSelectArea("SC6")
DbSetOrder(1)
DbSeek(xFilial("SC6")+cNumSC5)
While !SC6->(Eof()) .And. SC6->C6_FILIAL+SC6->C6_NUM == xFilial("SC6")+cNumSC5
MaLibDoFat(SC6->(RecNo()),SC6->C6_QTDVEN,.T.,.T.,.F.,.F.,.F.,.F.)
SC6->(MsUnlockAll())
SC5->(MsUnlockAll())
SC9->(MsUnlockAll())
SB2->(MsUnlockAll())
DbSelectArea("SC6")
SC6->(DbSkip())
EndDo
SC5->(RecLock("SC5",.F.))
SC5->C5_LIBEROK := "S"
SC5->(MsUnlock())
EndIf
Endif
End Transaction
DbSelectArea("TRBDT6")
cFilAnt := cRecFil
TRBDT6->(DbSkip())
EndDo
TRBDT6->(DbCloseArea())
TCSetConn( nSource )
cQuery := " SELECT * FROM DT6 "
cQuery += " WHERE REGTRA = 'I' "
cQuery += " AND DT6_DOCTMS = '1'"
cQuery := ChangeQuery( cQuery )
DbUseArea( .T., 'TOPCONN', TcGenQry(,,cQuery), "TRBDT6", .T., .F. )
aRetDTC2 := {}
DbSelectArea("TRBDT6")
DbGoTop()
TCSetConn( nTarget )
While !TRBDT6->(Eof())
aAdd(aRetDTC2,{TRBDT6->DT6_IDMOV})
TRBDT6->(DbSkip())
EndDo
TRBDT6->(DbCloseArea())
TCSetConn( nSource )
cQuery := " SELECT DISTINCT DTC_FILORI, DTC_IDMOV, COUNT(DTC_IDMOV) DTC_NUMREG FROM DTC "
cQuery += " WHERE REGTRA = 'I' "
cQuery += " AND DTC_NUMNFC <> '' "
cQuery += " AND DTC_DATENT >= '20131231' "
cQuery += " AND DTC_DATENT <= '20131231' "
cQuery += " GROUP BY DTC_FILORI, DTC_IDMOV "
cQuery := ChangeQuery( cQuery )
DbUseArea( .T., 'TOPCONN', TcGenQry(,,cQuery), "TRBDTC", .T., .F. )
TRBDTC->(dbGoTop())
nTotReg:= 0
While TRBDTC->(!Eof())
nTotReg++
TRBDTC->(dbSkip())
EndDo
If nTotReg <= 0
GeraLog("","","2","NENHUM REGISTRO PENDENTE DE IMPORTACAO")
Return(Nil)
EndIf
aLoteDTP := {}
DbSelectArea("TRBDTC")
DbGoTop()
TCSetConn( nTarget )
While !TRBDTC->(Eof())
aCabDTP := {}
If aScan(aRetDTC2, {|x| x[1] == TRBDTC->DTC_IDMOV}) > 0
TRBDTC->(DbSkip())
Loop
EndIf
If Empty(TRBDTC->DTC_FILORI)
TRBDTC->(DbSkip())
Loop
EndIf
cRecFil := cFilAnt
cFilAnt := Iif(AllTrim(Upper(TRBDTC->DTC_FILORI)) == "SP", "02", AllTrim(TRBDTC->DTC_FILORI))
lMsErroAuto := .F.
Aadd(aCabDTP,{'DTP_QTDLOT',TRBDTC->DTC_NUMREG,NIL})
Aadd(aCabDTP,{'DTP_QTDLOT',100,NIL})
Aadd(aCabDTP,{'DTP_QTDDIG',1,NIL})
Aadd(aCabDTP,{'DTP_TIPLOT','1',NIL})//--1 Normal, 2- Refaturamento, 3- Eletronico
Aadd(aCabDTP,{'DTP_STATUS','1',NIL})//--1 -Aberto, 2- Digitado, 3- Calculado, 4- Bloqueado, 5- Erro de Gravação
MsExecAuto({|x,y| TmsA170(x,y)},aCabDTP,3) //3= Inclusão
cFilAnt := cRecFil
If !lMsErroAuto
aAdd(aLoteDTP,{TRBDTC->DTC_IDMOV,DTP->DTP_LOTNFC})
EndIf
DbSelectArea("TRBDTC")
TRBDTC->(DbSkip())
EndDo
TRBDTC->(DbCloseArea())
TCSetConn( nSource )
cQuery := " SELECT * FROM DTC A "
cQuery += " INNER JOIN DT6 B "
cQuery += " ON DT6_IDMOV = DTC_IDMOV "
cQuery += " WHERE A.REGTRA = 'I' "
cQuery += " AND DTC_DATENT >= '20131201' "
cQuery += " AND DTC_DATENT <= '20131231' "
cQuery += " AND DT6_DOCTMS = '2' "
cQuery += " AND B.REGTRA <> 'X' "
cQuery += " ORDER BY DTC_IDMOV "
cQuery := ChangeQuery( cQuery )
DbUseArea( .T., 'TOPCONN', TcGenQry(,,cQuery), "TRBDTC", .T., .F. )
DbSelectArea("TRBDTC")
DbGoTop()
TCSetConn( nTarget )
While !TRBDTC->(Eof())
aCab := {}
aLinha := {}
aItens := {}
aItemDTC := {}
If Empty(TRBDTC->DTC_FILORI)
TRBDTC->(DbSkip())
Loop
EndIf
If Empty(TRBDTC->DTC_NUMNFC) .Or. Valtype("TRBDTC->DTC_NUMNFC") == "U"
TRBDTC->(DbSkip())
Loop
EndIf
If Empty(TRBDTC->DTC_SERNFC)
TRBDTC->(DbSkip())
Loop
EndIf
If Empty(TRBDTC->DT6_DOC) .Or. Empty(TRBDTC->DT6_SERIE)
TRBDTC->(DbSkip())
Loop
EndIf
cRecFil := cFilAnt
cFilAnt := Iif(AllTrim(Upper(TRBDTC->DTC_FILORI)) == "SP", "02", AllTrim(TRBDTC->DTC_FILORI))
If (npos:=aScan(aLoteDTP, {|x| x[1] == TRBDTC->DTC_IDMOV})) <= 0
TRBDTC->(DbSkip())
Loop
EndIf
DbSelectArea("SA1")
DbSetOrder(3)
cCGC := AllTrim(TRBDTC->DTC_CLIREM)+AllTrim(TRBDTC->DTC_LOJREM)
If !DbSeek(xFilial("SA1")+ cCGC )
TRBDTC->(DbSkip())
Loop
EndIf
cCLIREM := SA1->A1_COD
cLOJREM := SA1->A1_LOJA
cESTREM := SA1->A1_EST
cCLICON := SA1->A1_COD
cLOJCON := SA1->A1_LOJA
cESTCON := SA1->A1_EST
cCGC := AllTrim(TRBDTC->DTC_CLIDES)+AllTrim(TRBDTC->DTC_LOJDES)
If !DbSeek(xFilial("SA1")+ cCGC )
TRBDTC->(DbSkip())
Loop
EndIf
cCLIDES := SA1->A1_COD
cLOJDES := SA1->A1_LOJA
cESTDES := SA1->A1_EST
cCGC := AllTrim(TRBDTC->DTC_CLIDEV)+AllTrim(TRBDTC->DTC_LOJDEV)
If !DbSeek(xFilial("SA1")+ cCGC )
TRBDTC->(DbSkip())
Loop
EndIf
cCLIDEV := SA1->A1_COD
cLOJDEV := SA1->A1_LOJA
cESTDEV := SA1->A1_EST
cCGC := AllTrim(TRBDTC->DTC_CLICAL)+AllTrim(TRBDTC->DTC_LOJCAL)
If !DbSeek(xFilial("SA1")+ cCGC )
TRBDTC->(DbSkip())
Loop
EndIf
cCLICAL := SA1->A1_COD
cLOJCAL := SA1->A1_LOJA
cESTCAL := SA1->A1_EST
cCGC := AllTrim(TRBDTC->DT6_CLIDPC)+AllTrim(TRBDTC->DT6_LOJDPC)
If !DbSeek(xFilial("SA1")+ cCGC )
cCLIDPC := ""
cLOJDPC := ""
cESTDPC := ""
Else
cCLIDPC := SA1->A1_COD
cLOJDPC := SA1->A1_LOJA
cESTDPC := SA1->A1_EST
EndIf
//Processa o cancelamento
If !Empty(TRBDTC->DT6_XCANC)
dbSelectArea("SF2")
SF2->(dbSetOrder(1))
If SF2->(dbSeek(xFilial("SF2")+TRBDTC->DT6_DOC+TRBDTC->DT6_SERIE+SA1->A1_COD+SA1->A1_LOJA ))
aRegSD2 := {}
aRegSE1 := {}
aRegSE2 := {}
If MaCanDelF2("SF2",SF2->(RecNo()),@aRegSD2,@aRegSE1,@aRegSE2)
//Estorna o DT6
dbSelectArea("DT6")
DT6->(dbSetOrder(1))
If DT6->(dbSeek(xFilial("DT6")+cFilAnt+TRBDTC->DT6_DOC+TRBDTC->DT6_SERIE ))
DT6->(RecLock("DT6",.F.))
DT6->(dbDelete())
DT6->(MsUnlock())
EndIf
SF2->(MaDelNFS(aRegSD2,aRegSE1,aRegSE2,.F.,.F.,.F.,.F.))
//LOG de estorno
GeraLog(TRBDTC->DT6_DOC,TRBDTC->DT6_SERIE,"1","ESTORNO EFETUADO COM SUCESSO")
//Atualiza tabela no BD intermediario
TCSetConn( nSource )
TCSQLExec("UPDATE DT6 SET REGTRA = 'X' WHERE DT6_IDMOV = " + TRBDTC->DTC_IDMOV)
TCSetConn( nTarget )
Else
GeraLog(TRBDTC->DT6_DOC,TRBDTC->DT6_SERIE,"2","A NOTA FISCAL NAO PODE SER ESTORNADA NO ERP. CONFORME REGRA DE VALIDACAO PADRAO DO SISTEMA")
EndIf
EndIf
TRBDTC->(dbSkip())
Loop
EndIf
DbSelectArea("DT6")
DbSetOrder(1) //DT6_FILIAL+DT6_FILDOC+DT6_DOC+DT6_SERIE
If !Empty(TRBDTC->DT6_DOC) .And. !DbSeek(xFilial("DT6") + cFilAnt + TRBDTC->DT6_DOC + TRBDTC->DT6_SERIE )
DT6->(RecLock("DT6",.T.))
DT6_FILIAL := xFilial('DT6')
DT6_FILDOC := cFilAnt
DT6_DOC := TRBDTC->DT6_DOC
DT6_SERIE := TRBDTC->DT6_SERIE
DT6_FILDES := cFilAnt
DT6_DATEMI := STOD(TRBDTC->DT6_DATEMI)
DT6_HOREMI := SubStr(AllTrim(TRBDTC->DT6_HOREMI),1,2)+":"+SubStr(AllTrim(TRBDTC->DT6_HOREMI),3,2)+":00"
DT6_QTDVOL := TRBDTC->DT6_QTDVOL
DT6_VOLORI := TRBDTC->DT6_QTDVOL
DT6_PESO := TRBDTC->DT6_PESO
DT6_VALMER := TRBDTC->DT6_VALMER
DT6_TIPFRE := TRBDTC->DT6_TIPFRE
DT6_PRZENT := STOD(TRBDTC->DT6_DATEMI)
DT6_FILORI := cFilAnt
DT6_DOCTMS := "2"
DT6_CLIREM := cCLIREM
DT6_LOJREM := cLOJREM
DT6_CLIDES := cCLIDES
DT6_LOJDES := cLOJDES
DT6_CLICON := cCLICON
DT6_LOJCON := cLOJCON
DT6_CLIDPC := cCLIDPC
DT6_LOJDPC := cLOJDPC
DT6_CLIDEV := cCLIDEV
DT6_LOJDEV := cLOJDEV
DT6_DEVFRE := TRBDTC->DT6_DEVFRE
DT6_SERTMS := "2"
DT6_TIPTRA := TRBDTC->DT6_TIPTRA
DT6_STATUS := StrZero(7, Len(DT6->DT6_STATUS))
DT6_PRIPER := StrZero(2, Len(DT6->DT6_PRIPER))
DT6_FIMP := StrZero(0, Len(DT6->DT6_FIMP))
DT6_CLICAL := cCLICAL
DT6_LOJCAL := cLOJCAL
DT6_CDRORI := "SP"
DT6_CDRDES := "SPMTZ"
DT6_CDRCAL := "SPMTZ"
DT6_BLQDOC := "2"
DT6_VALFRE := TRBDTC->DT6_VALFRE
DT6_VALIMP := TRBDTC->DT6_VALIMP
DT6_VALTOT := TRBDTC->DT6_VALTOT
DT6_CODMSG := "000000"
DT6_CHVCTE := TRBDTC->DT6_CHVCTE
DT6_PROCTE := TRBDTC->DT6_PROCTE
DT6_XCF := TRBDTC->DT6_CF
DT6_CDFISC := TRBDTC->DT6_CDFISC
DT6_METRO3 := TRBDTC->DT6_METRO3
DT6_SITCTE := "2"
DT6->(MsUnlock())
If Empty( aCab )
AAdd( aCab, { 'F2_FILIAL' , xFilial("SF2") , Nil } )
AAdd( aCab, { 'F2_CLIENTE' , cCliDev , Nil } )
AAdd( aCab, { 'F2_DOC' , TRBDTC->DT6_DOC , Nil } )
AAdd( aCab, { 'F2_SERIE' , TRBDTC->DT6_SERIE , Nil } )
AAdd( aCab, { 'F2_LOJA' , cLojDev , Nil } )
AAdd( aCab, { 'F2_TIPO' , "N" , Nil } )
AAdd( aCab, { 'F2_TIPOCLI' , "F" , Nil } )
AAdd( aCab, { 'F2_COND' , "001" , Nil } )
AAdd( aCab, { 'F2_VOLUME1' , TRBDTC->DT6_QTDVOL , Nil } )
AAdd( aCab, { 'F2_PLIQUI' , TRBDTC->DT6_PESO , Nil } )
AAdd( aCab, { 'F2_PBRUTO' , TRBDTC->DT6_PESO , Nil } )
AAdd( aCab, { 'F2_EMISSAO' , STOD(TRBDTC->DT6_DATEMI), Nil } )
AAdd( aCab, { 'F2_HORA' , SubStr(Time(),1,5) , Nil } )
AAdd( aCab, { 'F2_REGIAO' , "SPMTZ" , Nil } )
AAdd( aCab, { 'F2_EST' , "SP" , Nil } )
AAdd( aCab, { 'F2_ESPECIE' , "CTE" , Nil } )
AAdd( aCab, { 'F2_NFORI' , TRBDTC->DT6_DOC , Nil } ) // NF Origem
AAdd( aCab, { 'F2_SERIORI' , TRBDTC->DT6_SERIE , Nil } ) // Serie da NF Origem
AAdd( aCab, { 'F2_ITEMORI' , "" , Nil } ) // Item da NF Origem
AAdd( aCab, { 'F2_RECISS' , "" , Nil } ) // Recolhe ISS
AAdd( aCab, { 'F2_MOEDA' , 1 , Nil } )
AAdd( aCab, { 'F2_CLIENT' , cCliDes , Nil } ) //--Cliente Destinatario
AAdd( aCab, { 'F2_LOJENT' , cLojDes , Nil } ) //--Loja Destinatario
AAdd( aCab, { 'F2_VEND1' ," " , Nil } )
AAdd( aCab, { 'F2_CTE' ," " , Nil } )
AAdd( aCab, { 'F2_CHVNFE' ,TRBDTC->DT6_CHVCTE , Nil } )
cTesItem := SGRetTES()
If Empty(cTesItem)
EndIf
AAdd( aLinha, { 'D2_FILIAL' , xFilial("SD2") , Nil } ) // Filial
AAdd( aLinha, { 'D2_TIPO' , "N" , Nil } ) // Tipo
AAdd( aLinha, { 'D2_CLIENTE' , cCliDev , Nil } ) // Cliente
AAdd( aLinha, { 'D2_LOJA' , cLojDev , Nil } ) // Loja
AAdd( aLinha, { 'D2_ITEM' , "01" , Nil } ) // Item
AAdd( aLinha, { 'D2_COD' , "PRODCALC" , Nil } ) // Material
AAdd( aLinha, { 'D2_TP' , "SE" , Nil } ) // Tipo do Material
AAdd( aLinha, { 'D2_UM' , "UN" , Nil } ) // Unidade de medida
AAdd( aLinha, { 'D2_SEGUM' , " " , Nil } ) // Segunda unidade de medida
AAdd( aLinha, { 'D2_LOCAL' , "01" , Nil } ) // Armazem padrao
AAdd( aLinha, { 'D2_SERVIC' , "010" , Nil } ) // Servico
AAdd( aLinha, { 'D2_QUANT' , 1 , Nil } ) // Quantidade
AAdd( aLinha, { 'D2_PRCVEN' , TRBDTC->DT6_VALTOT , Nil } ) // Preco unitario
AAdd( aLinha, { 'D2_TOTAL' , TRBDTC->DT6_VALTOT , Nil } ) // Valor total do item
AAdd( aLinha, { 'D2_VALFRE' , TRBDTC->DT6_VALFRE , Nil } ) // Valor Frete
AAdd( aLinha, { 'D2_PRUNIT' , TRBDTC->DT6_VALTOT , Nil } ) // Preco unitario
AAdd( aLinha, { 'D2_PESO' , TRBDTC->DT6_PESO , Nil } ) // Preco unitario
AAdd( aLinha, { 'D2_EMISSAO' , dDataBase , Nil } ) // Emissao
AAdd( aLinha, { 'D2_EST' , "SP" , Nil } ) // Estado
AAdd( aLinha, { 'D2_TES' , TRBDTC->DT6_CDFISC , Nil } ) // TES
AAdd( aLinha, { 'D2_TES' , "505" , Nil } ) // TES
AAdd( aLinha, { 'D2_CF' , TRBDTC->DT6_CF , Nil } ) // CF
AAdd( aLinha, { 'D2_ALIQISS' , 3 , Nil } ) // Aliq. ISS
AAdd( aLinha, { 'D2_NFORI' , "" , Nil } ) // NF Origem
AAdd( aLinha, { 'D2_SERIORI' , "" , Nil } ) // Serie da NF Origem
AAdd( aLinha, { 'D2_ITEMORI' , "" , Nil } ) // Item da NF Origem
AAdd( aLinha, { 'D2_CONTA' , " " , Nil } ) // Conta Contabil
AAdd( aLinha, { 'D2_CODISS' , " " , Nil } ) // Codigo do ISS
AAdd( aLinha, { 'D2_PICM' , TRBDTC->DT6_ALIQICM , Nil } ) // Item da NF Origem
AAdd( aLinha, { 'D2_BASEICM' , TRBDTC->DT6_BASCALC , Nil } ) // Conta Contabil
AAdd( aLinha, { 'D2_VALIMP' , TRBDTC->DT6_VALIMP , Nil } ) // Codigo do ISS
AAdd(aItens,AClone(aLinha))
aNFS := GeraDoc(cCliDev, cLojDev, "2", aItens, aCab, "SPMTZ", " ", .F., cESTDEV, cESTDEV,;
cESTDEV, "01", {|| .T. }, "UNI", {|| .T. }, {TRBDTC->DT6_DOC,TRBDTC->DT6_SERIE} )
If Len(aNFS)
GeraLog(TRBDTC->DT6_DOC,TRBDTC->DT6_SERIE,"2","A NOTA FISCAL NAO FOI GERADA")
EndIf
If Len(aNFS) > 0 .And. !Empty(aNFS[1])
SF2->(DbSetOrder(2))
If SF2->(DbSeek(xFilial("SF2")+ cCliDev + cLojDev + aNFS[1] + aNFS[2] ))
SF2->(RecLock('SF2',.F.))
SF2->F2_EMISSAO := STOD(TRBDTC->DT6_DATEMI)
SF2->F2_ESPECIE := "CTE"
SF2->F2_VALICM := TRBDTC->DT6_VALIMP
SF2->F2_BASEICM := TRBDTC->DT6_BASCALC
SF2->(MsUnlock())
cTesItem := ""
dbSelectArea("SA1")
SA1->(dbSetOrder(1))
SA1->(dbSeek(xFilial("SA1")+cCliDev+cLojDev ))
SD2->(DbSetOrder(3)) //D2_FILIAL+D2_DOC+D2_SERIE+D2_CLIENTE+D2_LOJA+D2_COD+D2_ITEM
SD2->(DbSeek(xFilial("SD2")+ aNFS[1] + aNFS[2] + cCliDev + cLojDev ))
While !SD2->(Eof()) .And. SD2->D2_FILIAL+SD2->D2_DOC+SD2->D2_SERIE+SD2->D2_CLIENTE+SD2->D2_LOJA == xFilial("SD2")+aNFS[1]+aNFS[2]+cCliDev+cLojDev
SD2->(RecLock('SD2',.F.))
SD2->D2_EMISSAO := STOD(TRBDTC->DT6_DATEMI)
SD2->D2_CF := TRBDTC->DT6_CF
SD2->D2_TES := TRBDTC->DT6_CDFISC
SD2->D2_VALICM := TRBDTC->DT6_VALIMP
SD2->D2_BASEICM := TRBDTC->DT6_BASCALC
SD2->D2_PICM := TRBDTC->DT6_ALIQICM
SD2->(MsUnlock())
cTesItem := SD2->D2_TES
SD2->(DbSkip())
EndDo
//Posiciona na TES para associar a coluna do livro fiscal parametrizada (TRIBUTADA, OUTROS, etc)
cColunaLivro := ""
dbSelectArea("SF4")
SF4->(dbSetOrder(1))
If SF4->(dbSeek(xFilial("SF4")+cTesItem))
cColunaLivro := SF4->F4_LFICM
EndIf
SF3->(DbSetOrder(4))
SF3->(DbSeek(xFilial("SF3")+ SF2->F2_CLIENTE + SF2->F2_LOJA + SF2->F2_DOC + SF2->F2_SERIE ))
While SF3->(!Eof()) .And. SF3->(F3_FILIAL+F3_CLIEFOR+F3_LOJA+F3_NFISCAL+F3_SERIE) == xFilial("SF3")+ SF2->F2_CLIENTE + SF2->F2_LOJA + SF2->F2_DOC + SF2->F2_SERIE
If AllTrim(SF3->F3_ESPECIE) == "CTE"
SF3->(RecLock('SF3',.F.))
SF3->F3_EMISSAO := STOD(TRBDTC->DT6_DATEMI)
SF3->F3_ENTRADA := STOD(TRBDTC->DT6_DATEMI)
SF3->F3_ESPECIE := "CTE"
SF3->F3_ALIQICM := TRBDTC->DT6_ALIQICM
SF3->F3_BASEICM := TRBDTC->DT6_BASCALC
SF3->F3_CFO := TRBDTC->DT6_CF
If cColunaLivro == "T"
SF3->F3_VALICM := TRBDTC->DT6_VALIMP
ElseIf cColunaLivro == "I"
SF3->F3_ISENICM := TRBDTC->DT6_VALIMP
ElseIf cColunaLivro == "O"
SF3->F3_OUTRICM := TRBDTC->DT6_VALIMP
EndIf
SF3->(MsUnlock())
EndIf
SF3->(dbSkip())
EndDo
SFT->(DbSetOrder(1)) //FT_FILIAL+FT_NFISCAL+FT_SERIE
SFT->(DbSeek(xFilial("SFT")+"S"+SF2->F2_SERIE+SF2->F2_DOC+SF2->F2_CLIENTE+SF2->F2_LOJA ))
While !SFT->(Eof()) .And. SFT->(FT_FILIAL+FT_TIPOMOV+FT_SERIE+FT_NFISCAL+FT_CLIEFOR+FT_LOJA) == xFilial("SFT")+"S"+SF2->F2_SERIE+SF2->F2_DOC+SF2->F2_CLIENTE+SF2->F2_LOJA
SFT->(RecLock('SFT',.F.))
SFT->FT_EMISSAO := STOD(TRBDTC->DT6_DATEMI)
SFT->FT_ENTRADA := STOD(TRBDTC->DT6_DATEMI)
SFT->FT_CFOP := TRBDTC->DT6_CF
SFT->FT_ALIQICM := TRBDTC->DT6_ALIQICM
SFT->FT_BASEICM := TRBDTC->DT6_BASCALC
SFT->FT_CFOP := TRBDTC->DT6_CF
If cColunaLivro == "T"
SFT->FT_VALICM := TRBDTC->DT6_VALIMP
ElseIf cColunaLivro == "I"
SFT->FT_ISENICM := TRBDTC->DT6_VALIMP
ElseIf cColunaLivro == "O"
SFT->FT_OUTRICM := TRBDTC->DT6_VALIMP
EndIf
SFT->(MsUnlock())
SFT->(DbSkip())
EndDo
//Atualiza o registros fiscais do SPED
dbSelectArea("CD2")
CD2->(dbSetOrder(1))
CD2->(dbSeek(xFilial("CD2")+"S"+SF2->F2_SERIE+SF2->F2_DOC+SF2->F2_CLIENTE+SF2->F2_LOJA))
While CD2->(!Eof()) .And. CD2->(CD2_FILIAL+CD2_TPMOV+CD2_SERIE+CD2_DOC+CD2_CODCLI+CD2_LOJCLI) == xFilial("CD2")+"S"+SF2->F2_SERIE+SF2->F2_DOC+SF2->F2_CLIENTE+SF2->F2_LOJA
If AllTrim(CD2->CD2_IMP) == "ICM"
CD2->(RecLock("CD2",.F.))
CD2->CD2_BC := TRBDTC->DT6_BASCALC
CD2->CD2_ALIQ := TRBDTC->DT6_ALIQICM
CD2->CD2_VLTRIB := TRBDTC->DT6_VALIMP
CD2->CD2_QTRIB := 1
CD2->(MsUnlock())
EndIf
CD2->(dbSkip())
EndDo
SE1->(DbSetOrder(1))
If SE1->(DbSeek(xFilial("SE1")+ SF2->F2_SERIE + SF2->F2_DOC ))
SE1->(RecLock('SE1',.F.))
SE1->E1_EMISSAO := STOD(TRBDTC->DT6_DATEMI)
SE1->E1_IDFIN := AllTrim(Str(TRBDTC->E1_IDFIN))
SE1->(MsUnlock())
EndIf
EndIf
EndIf //verificar se o sistema esta finalizando este fim de EndIF
EndIf
EndIf
aCabDTC := { {"DTC_FILORI" ,cFilAnt , Nil},;
{"DTC_LOTNFC" ,aLoteDTP[nPos][2] , Nil},;
{"DTC_CLIREM" ,cCLIREM , Nil},;
{"DTC_LOJREM" ,cLOJREM , Nil},;
{"DTC_DATENT" ,dDataBase , Nil},;
{"DTC_CLIDES" ,cCLIDES , Nil},;
{"DTC_LOJDES" ,cLOJDES , Nil},;
{"DTC_CLIDEV" ,cCLIDEV , Nil},;
{"DTC_LOJDEV" ,cLOJDEV , Nil},;
{"DTC_CLICAL" ,cCLICAL , Nil},;
{"DTC_LOJCAL" ,cLOJCAL , Nil},;
{"DTC_CLICON" ,cCLICON , Nil},;
{"DTC_LOJCON" ,cLOJCON , Nil},;
{"DTC_CTRDPC" ,TRBDTC->DT6_DOC , Nil},;
{"DTC_DEVFRE" ,"1" , Nil},;
{"DTC_SERTMS" ,"2" , Nil},;
{"DTC_TIPTRA" ,"1" , Nil},;
{"DTC_SERVIC" ,"010" , Nil},;
{"DTC_TIPNFC" ,"0" , Nil},;
{"DTC_TIPFRE" ,"1" , Nil},;
{"DTC_SELORI" ,"2" , Nil},;
{"DTC_CDRORI" ,"SP" , Nil},;
{"DTC_CDRDES" ,'SPMTZ' , Nil},;
{"DTC_CDRCAL" ,'SPMTZ' , Nil},;
{"DTC_DISTIV" ,'2' , Nil} }
aItem := { {"DTC_NUMNFC" ,TRBDTC->DTC_NUMNFC , Nil},;
{"DTC_SERNFC" ,TRBDTC->DTC_SERNFC , Nil},;
{"DTC_CODPRO" ,"PRODCALC" , Nil},;
{"DTC_CODEMB" ,"CX" , Nil},;
{"DTC_EMINFC" ,dDataBase , Nil},;
{"DTC_QTDVOL" ,TRBDTC->DTC_QTDVOL , Nil},;
{"DTC_PESO" ,TRBDTC->DTC_PESO , Nil},;
{"DTC_DOC" ,TRBDTC->DT6_DOC , Nil},;
{"DTC_SERIE" ,TRBDTC->DT6_SERIE , Nil},;
{"DTC_METRO3" ,TRBDTC->DTC_METRO3 , Nil},;
{"DTC_CTRDPC" ,TRBDTC->DT6_DOC , Nil},;
{"DTC_PESOM3" ,0 , Nil},;
{"DTC_VALOR" ,TRBDTC->DTC_VALOR , Nil},;
{"DTC_VALICM" ,AllTrim(Str(TRBDTC->DT6_VALIMP)) , Nil},;
{"DTC_BASSEG" ,0 , Nil},;
{"DTC_QTDUNI" ,0 , Nil},;
{"DTC_EDI" ,"2" , Nil} }
// {"DTC_VALICM" ,TRBDTC->DT6_VALIMP , Nil},;
aAdd(aItemDTC,aClone(aItem))
U_GRVCTEIT(aCabDTC, aItemDTC, Nil, Nil, 3)
DbSelectArea("DTP")
DbSetOrder(1)
If DbSeek(xFilial("DTP")+ aLoteDTP[nPos][2] )
RecLock('DTP',.F.)
DTP->DTP_STATUS := StrZero(3 ,Len(DTP->DTP_STATUS))
DTP->(MsUnlock())
EndIf
//Atualiza com sucesso no LOG
GeraLog(TRBDTC->DT6_DOC,TRBDTC->DT6_SERIE,"1","")
TCSetConn( nSource )
TCSQLExec("UPDATE DT6 SET REGTRA = 'X' WHERE DT6_IDMOV = " + Iif (ValType(TRBDTC->DTC_IDMOV) == "N",AllTrim(Str(TRBDTC->DTC_IDMOV)),TRBDTC->DTC_IDMOV) )
TCSetConn( nTarget )
cFilAnt := cRecFil
//Daniel Lima - Realiza o Reprocessamento do Livro
aPergM903 := {}
aAdd(aPergM903, STOD(TRBDTC->DT6_DATEMI)) //01 - Data de Emissao do Docto
aAdd(aPergM903, STOD(TRBDTC->DT6_DATEMI)) //02 - Data de Emissao do Docto
aAdd(aPergM903, 2) //03 - Entrada ou Saida
aAdd(aPergM903, TRBDTC->DT6_DOC) //04
aAdd(aPergM903, TRBDTC->DT6_DOC) //05
aAdd(aPergM903, TRBDTC->DT6_SERIE) //06
aAdd(aPergM903, TRBDTC->DT6_SERIE) //07
aAdd(aPergM903, cCliDev) //08
aAdd(aPergM903, cCliDev) //09
aAdd(aPergM903, cLojDev) //10
aAdd(aPergM903, cLojDev) //11
aAdd(aPergM903, xFilial("SF2")) //12
aAdd(aPergM903, xFilial("SF2")) //12
MATA930 (.T.,aPergM903)
mv_par01 := STOD(TRBDTC->DT6_DATEMI)
mv_par02 := STOD(TRBDTC->DT6_DATEMI)
mv_par03 := 2
mv_par04 := TRBDTC->DT6_DOC
mv_par05 := TRBDTC->DT6_DOC
mv_par06 := TRBDTC->DT6_SERIE
mv_par07 := TRBDTC->DT6_SERIE
mv_par08 := cCliDev
mv_par09 := cCliDev
mv_par10 := cLojDev
mv_par11 := cLojDev
A930RPSaida(.T.)
//Fim - Daniel Lima - Realiza o Reprocessamento do Livro
//Atualiza
TRBDTC->(DbSkip())
EndDo
TRBDTC->(DbCloseArea())
TcUnlink(nSource)
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Volta a conexao para o banco target ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
TCSetConn( nTarget )
MsgInfo("Processo finalizado com sucesso")
Return
/*ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿±±
±±³Fun‡„o ³ SGRetTES ³ Autor ³ Leonardo Kichitaro ³ Data ³ 04/10/13 ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´±±
±±³Descri‡„o ³ Retorna TES conforme CFOP. ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³Uso ³ SIGLA ³±±
±±ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß*/
Static Function SGRetTES()
Local cRetTES := ""
If AllTrim(TRBDTC->DT6_CF) $ "5351/6351" .and. Alltrim(TRBDTC->DT6_CDFISC) = "501"
cRetTES := "501"
ElseIf AllTrim(TRBDTC->DT6_CF) $ "5352/6352" .and. Alltrim(TRBDTC->DT6_CDFISC) = "502"
cRetTES := "502"
ElseIf AllTrim(TRBDTC->DT6_CF) $ "5352/6352" .and. Alltrim(TRBDTC->DT6_CDFISC) = "503"
cRetTES := "503"
ElseIf AllTrim(TRBDTC->DT6_CF) = "5353/6353" .and. Alltrim(TRBDTC->DT6_CDFISC) = "504"
cRetTES := "504"
ElseIf AllTrim(TRBDTC->DT6_CF) = "5353/6353" .and. Alltrim(TRBDTC->DT6_CDFISC) = "505"
cRetTES := "505"
ElseIf AllTrim(TRBDTC->DT6_CF) = "5354/6354" .and. Alltrim(TRBDTC->DT6_CDFISC) = "506"
cRetTES := "506"
ElseIf AllTrim(TRBDTC->DT6_CF) = "5354/6354" .and. Alltrim(TRBDTC->DT6_CDFISC) = "507"
cRetTES := "507"
ElseIf AllTrim(TRBDTC->DT6_CF) = "5355/6355" .and. Alltrim(TRBDTC->DT6_CDFISC) = "508"
cRetTES := "508"
ElseIf AllTrim(TRBDTC->DT6_CF) = "5355/6355" .and. Alltrim(TRBDTC->DT6_CDFISC) = "509"
cRetTES := "509"
ElseIf AllTrim(TRBDTC->DT6_CF) = "5356/6356".and. Alltrim(TRBDTC->DT6_CDFISC) = "510"
cRetTES := "510"
ElseIf AllTrim(TRBDTC->DT6_CF) = "5356/6356".and. Alltrim(TRBDTC->DT6_CDFISC) = "511"
cRetTES := "511"
ElseIf AllTrim(TRBDTC->DT6_CF) = "5357/6357" .and. Alltrim(TRBDTC->DT6_CDFISC) = "512"
cRetTES := "512"
ElseIf AllTrim(TRBDTC->DT6_CF) = "5357/6357" .and. Alltrim(TRBDTC->DT6_CDFISC) = "513"
cRetTES := "513"
ElseIf AllTrim(TRBDTC->DT6_CF) = "5932/6932".and. Alltrim(TRBDTC->DT6_CDFISC) = "514"
cRetTES := "514"
EndIf
Return cRetTES
/*ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿±±
±±³Fun‡„o ³ GeraDoc ³ Autor ³ Eduardo de Souza ³ Data ³ 07/12/04 ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´±±
±±³Descri‡„o ³ Geracao de documento sem pedido. ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³Sintaxe ³ GeraDoc(ExpC1,ExpC2,ExpC3,ExpA1) ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³Parametros³ ExpC1 - Cliente ³±±
±±³ ³ ExpC2 - Loja ³±±
±±³ ³ ExpC3 - Documento de Transporte ³±±
±±³ ³ ExpA1 - Array contendo os itens do SD2 ³±±
±±³ ³ ExpC4 - Cliente Destino ³±±
±±³ ³ ExpC5 - Loja Destino ³±±
±±³ ³ ExpC6 - Regiao de Calculo ³±±
±±³ ³ ExpC7 - Numero da Solicitacao de Coleta ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³Uso ³ TMSA200 ³±±
±±ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß*/
Static Function GeraDoc(cCliente,cLoja,cDocTms,aDadosSD2,aDadosSF2,cCdrCal,;
cNumSol,lCalcISS,cEstOri,cEstCal,cEstDev,cFilSol,bTTS,cSerie,bFatSE1,aNumDoc)
Local aStruSD2 := SD2->(dbStruct())
Local aStruSF2 := SF2->(dbStruct())
Local n1Cnt := 0
Local n2Cnt := 0
Local nPos := 0
Local nPosTES := 0
Local aRegSD2 := {}
Local aSF2 := {}
Local aDocOri := {}
Local aItemOri := {}
Local cNumNfs := ""
Local cTexto := ""
Local nPosAliqIss := 0
Local bFiscalSF2 := { || .T. }
Local bFiscalSD2 := { || .T. }
Local cTextoSF2 := ""
Local cEspecie := ""
Local cTipoCli := ""
Local lMostraCtb := .F.
Local lAglutCtb := .F.
Local lCtbOnLine := .F.
Local cCliDest := ''
Local cLojDest := ''
Local lInscr := .T.
Local aAreaSA1 := {}
Local nPosPICM := 0
Local nPosValICM := 0
Local nPosVBsICM := 0
Local nPosValISS := 0
Local nPosVBsISS := 0
Local nPosPrcVen := 0
Local nPosICMRet := 0
Local lValISS := .F.
Local lVBsISS := .F.
Local lPICM := .F.
Local lValICM := .F.
Local lVBsICM := .F.
Local cNumDoc := ''
Default cNumSol := ''
Default cCdrCal := ''
Default lCalcISS := .F.
Default cFilSol := cFilAnt
Default aNumDoc := {}
If Len(aNumDoc) > 0
cNumDoc := aNumDoc[1]
cSerie := aNumDoc[2]
EndIf
cEspecie := "CTE"//A460Especie(cSerie)
//--Carrega grupo de perguntas
Pergunte('TMB200',.F.)
lAglutCtb := mv_par03 == 1
lCtbOnLine := mv_par04 == 1
//-- Alimenta o array contendo os itens da nota fiscal
For n1Cnt := 1 To Len(aDadosSD2)
AAdd( aDocOri, 0 )
AAdd( aItemOri, {} )
For n2Cnt := 1 To Len(aStruSD2)
If (nPos := Ascan(aDadosSD2[n1Cnt], {|x| AllTrim(x[1]) == AllTrim(aStruSD2[n2Cnt][1]) })) > 0
If !lValISS .And. 'D2_VALISS' $ aStruSD2[n2Cnt][1] .And. aDadosSD2[n1Cnt,nPos,2] > 0
// lValISS := .T.
ElseIf !lVBsISS .And. 'D2_BASEISS' $ aStruSD2[n2Cnt][1] .And. aDadosSD2[n1Cnt,nPos,2] > 0
// lVBsISS := .T.
ElseIf !lPICM .And. 'D2_PICM' $ aStruSD2[n2Cnt][1] .And. aDadosSD2[n1Cnt,nPos,2] > 0
// lPICM := .T.
ElseIf !lValICM .And. 'D2_VALICM' $ aStruSD2[n2Cnt][1] .And. aDadosSD2[n1Cnt,nPos,2] > 0
// lValICM := .T.
ElseIf !lVBsICM .And. 'D2_BASEICM' $ aStruSD2[n2Cnt][1] .And. aDadosSD2[n1Cnt,nPos,2] > 0
// lVBsICM := .T.
EndIf
AAdd(aItemOri[n1Cnt],aDadosSD2[n1Cnt,nPos,2])
Else
If aStruSD2[n2Cnt][2] $ "C/M"
AAdd(aItemOri[n1Cnt],"")
ElseIf aStruSD2[n2Cnt][2] == "N"
AAdd(aItemOri[n1Cnt],0)
ElseIf aStruSD2[n2Cnt][2] == "D"
AAdd(aItemOri[n1Cnt],CtoD(" / / "))
ElseIf aStruSD2[n2Cnt][2] == "L"
AAdd(aItemOri[n1Cnt],.F.)
EndIf
EndIf
Next n2Cnt
Next n1Cnt
//-- Alimenta o array contendo o cabecalho da nota fiscal
For n1Cnt := 1 To Len(aStruSF2)
If (nPos := Ascan(aDadosSF2, {|x| AllTrim(x[1]) == AllTrim(aStruSF2[n1Cnt][1]) })) > 0
AAdd(aSF2,aDadosSF2[nPos,2])
Else
If aStruSF2[n1Cnt][2] $ "C/M"
AAdd(aSF2,"")
ElseIf aStruSF2[n1Cnt][2] == "N"
AAdd(aSF2,0)
ElseIf aStruSF2[n1Cnt][2] == "D"
AAdd(aSF2,CtoD(" / / "))
ElseIf aStruSF2[n1Cnt][2] == "L"
AAdd(aSF2,.F.)
EndIf
EndIf
Next n1Cnt
//-- Aliquota do ISS
nPosAliqIss := Ascan(aStruSD2, { |x| AllTrim(x[1]) == 'D2_ALIQISS' } )
If aItemOri[Len(aItemOri),nPosAliqIss] <> SuperGetMv('MV_ALIQISS')
If !Empty(cTexto)
cTexto += ', '
EndIf
If lValISS
//-- Caso exista alteração do valor do ISS, envia parametro para MaFisAlt para não recalcular valores
cTexto += 'MaFisAlt("IT_ALIQISS",aItemOri[nY,nPosAliqIss],nY,.F.,,,,.F.)'
Else
cTexto += 'MaFisAlt("IT_ALIQISS",aItemOri[nY,nPosAliqIss],nY,.F.,,,,.F.)'
EndIf
EndIf
//-- Utilizado em rotinas que importam o documento
If lValISS
nPosValISS := Ascan(aStruSD2, { |x| AllTrim(x[1]) == 'D2_VALISS' } )
nPosPrcVen := Ascan(aStruSD2, { |x| AllTrim(x[1]) == 'D2_PRCVEN' } )
If nPosValISS > 0
If !Empty(cTexto)
cTexto += ', '
EndIf
cTexto += 'MaFisAlt("IT_VALISS",aItemOri[nY,nPosValISS],nY,.F.,,,,.F.)'
EndIf
EndIf
If lVBsISS
nPosVBsISS := Ascan(aStruSD2, { |x| AllTrim(x[1]) == 'D2_BASEISS' } )
If nPosVBsISS > 0
If !Empty(cTexto)
cTexto += ', '
EndIf
cTexto += 'MaFisAlt("IT_VALMERC",aItemOri[nY,nPosPrcVen],nY,.F.,,,,.F.), '
cTexto += 'MaFisAlt("IT_BASEISS",aItemOri[nY,nPosVBsISS],nY,.F.,,,,.F.), '
cTexto += 'MaFisAlt("IT_BASEDUP",aItemOri[nY,nPosVBsISS],nY,.F.,,,,.F.), '
cTexto += 'MaFisAlt("IT_TOTAL" ,aItemOri[nY,nPosVBsISS],nY,.F.,,,,.F.)'
EndIf
EndIf
If lPICM
nPosPICM := Ascan(aStruSD2, { |x| AllTrim(x[1]) == 'D2_PICM' } )
If nPosPICM > 0
If !Empty(cTexto)
cTexto += ', '
EndIf
cTexto += 'MaFisAlt("IT_ALIQICM",aItemOri[nY,nPosPICM],nY,.F.,,,,.F.)'
EndIf
EndIf
If lValICM
nPosValICM := Ascan(aStruSD2, { |x| AllTrim(x[1]) == 'D2_VALICM' } )
If nPosValICM > 0
If !Empty(cTexto)
cTexto += ', '
EndIf
cTexto += 'MaFisAlt("IT_VALICM",aItemOri[nY,nPosValICM],nY,.F.,,,,.F.)'
EndIf
EndIf
If lVBsICM
nPosVBsICM := Ascan(aStruSD2, { |x| AllTrim(x[1]) == 'D2_BASEICM' } )
nPosICMRet := Ascan(aStruSD2, { |x| AllTrim(x[1]) == 'D2_ICMSRET' } )
If nPosVBsICM > 0
If !Empty(cTexto)
cTexto += ', '
EndIf
cTexto += 'MaFisAlt("IT_VALMERC",aItemOri[nY,nPosPrcVen],nY,.F.,,,,.F.), '
cTexto += 'MaFisAlt("IT_BASEICM",aItemOri[nY,nPosVBsICM],nY,.F.,,,,.F.), '
If nPosICMRet > 0
cTexto += 'MaFisAlt("IT_BASEDUP",(aItemOri[nY,nPosVBsICM] - aItemOri[nY,nPosICMRet]),nY,.F.,,,,.F.), '
cTexto += 'MaFisAlt("IT_VALSOL",aItemOri[nY,nPosICMRet],nY,.F.,,,,.F.), '
Else
cTexto += 'MaFisAlt("IT_BASEDUP",aItemOri[nY,nPosVBsICM],nY,.F.,,,,.F.), '
EndIf
cTexto += 'MaFisAlt("IT_TOTAL" ,aItemOri[nY,nPosVBsICM],nY,.F.,,,,.F.) '
EndIf
EndIf
If lValISS .Or. lValICM
//-- Atualiza informações do livro
If !Empty(cTexto)
cTexto += ', '
EndIf
cTexto += 'MaFisTes(SD2->D2_TES,0,nY),MaFisLf(nY,.F.)'
EndIf
//-- Fim do uso em rotinas que importam o documento
If lCalcISS .And. TM200Mun(cCdrCal,cFilSol,cNumSol)
//-- Se o servico a ser executado for no mesmo municipio da transportadora, nao deve ser gerado titulo de
//-- retencao de imposto, pois neste caso, o responsavel pelo recolhimento do imposto e' a propria transportadora
If !Empty(cTexto)
cTexto += ', '
EndIf
cTexto += 'MaFisAlt("NF_RECISS","2",nY,.F.,,,,.F.)'
EndIf
If TYPE("M->C5_VLR_FRT") <> "U"
If !Empty(cTexto)
cTexto += ', '
EndIf
cTexto += 'MaFisAlt("NF_VLR_FRT",M->C5_VLR_FRT)' // Envia Valor_frete para alterar base do ICMS PAUTA
EndIf
If !Empty(cTexto)
bFiscalSD2 := &('{||'+cTexto+'}')
EndIf
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³TRATAMENTO PARA VERIFICAR SE O DESTINATARIO³
//³EH CONTRIBUINTE DO IMPOSTO ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
//--Obtem o cliente destinatario...
//--Verifica primeiro se existe o "Cliente de Entrega" para
//--considerar como destinatario (SF2). Caso nao exista, sera
//--considerado como destinatario da carga o proprio cliente (F2_CLIENTE)
nPos := Ascan( aDadosSF2,{ |x| AllTrim( x[1] ) == "F2_CLIENT" } )
If nPos > 0
cCliDest := aDadosSF2[nPos,2]
cLojDest := StrZero( 1, Len( SA1->A1_LOJA ) )
Else
nPos := Ascan( aDadosSF2,{ |x| AllTrim( x[1] ) == "F2_CLIENTE" } )
If nPos > 0
cCliDest := aDadosSF2[nPos,2]
cLojDest := StrZero( 1, Len( SA1->A1_LOJA ) )
EndIf
EndIf
nPos := Ascan( aDadosSF2,{ |x| AllTrim( x[1] ) == "F2_LOJENT" } )
If nPos > 0
cLojDest := aDadosSF2[nPos,2]
Else
nPos := Ascan( aDadosSF2,{ |x| AllTrim( x[1] ) == "F2_LOJA" } )
If nPos > 0
cLojDest := aDadosSF2[nPos,2]
EndIf
EndIf
SA1->(DbSetOrder(1)) //A1_FILIAL+A1_COD+A1_LOJA
SA1->(MsSeek(xFilial("SA1")+cCliente+cLoja))
cTipoCli := SA1->A1_TIPO
If !Empty(cCliDest) .And. !Empty(cLojDest)
aAreaSA1 := SA1->(GetArea())
SA1->(DbSetOrder(1)) //A1_FILIAL+A1_COD+A1_LOJA
If SA1->(MsSeek(xFilial("SA1")+cCliDest+cLojDest))
lInscr := IIf((Empty(SA1->A1_INSCR).Or."ISENT"$SA1->A1_INSCR.Or."RG"$SA1->A1_INSCR).Or.SA1->A1_CONTRIB=="2",.F.,.T.)
//Se a variavel lInscr retornar True, o cliente nao e inscrito, ao contrario e considerado inscrito
If lInscr
cTextoSF2 += 'MaFisAlt("NF_LINSCR",.T.),'
Else
cTextoSF2 += 'MaFisAlt("NF_LINSCR",.F.),'
EndIf
EndIf
RestArea( aAreaSA1 )
EndIf
cTextoSF2 += 'MaFisAlt( "NF_UFORIGEM", cEstOri ),'
cTextoSF2 += 'MaFisAlt( "NF_UFDEST", cEstCal ),'
cTextoSF2 += 'MaFisAlt( "NF_PNF_UF", cEstDev ),'
cTextoSF2 += 'MaFisAlt( "NF_ESPECIE", cEspecie ),'
cTextoSF2 += 'MaFisAlt( "NF_PNF_TPCLIFOR", cTipoCli )'
bFiscalSF2 := &( '{||' + cTextoSF2 + '}' )
cNumNfs := MaNfs2Nfs(,,cCliente,cLoja,cSerie,lMostraCtb,lAglutCtb,lCtbOnLine,,,,,,,,,{|| aRegSD2 := {} },bTTS,aDocOri,aItemOri,aSF2,.F.,bFiscalSF2,bFiscalSD2,bFatSE1,cNumDoc)
Return { cNumNfs, cSerie }
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºPrograma ³ GeraLog ºAutor ³ FlexLog º Data ³ 30/12/13 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc. ³Geracao do LOG em tabela para consulta posterior º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
Static Function GeraLog(cDocumento,cSerie,cStatus,cObs)
dbSelectArea("SZ2")
SZ2->(dbSetOrder(1))
SZ2->(RecLock("SZ2",.T.))
SZ2->Z2_FILIAL := xFilial("SZ2")
SZ2->Z2_DOC := cDocumento
SZ2->Z2_SERIE := cSerie
SZ2->Z2_STATUS := cStatus
SZ2->Z2_OBS := cObs
SZ2->Z2_DATA := Date()
SZ2->Z2_HORA := Time()
SZ2->(MsUnlock())
Return(Nil)
integração de outro sistema com o protheus foi criado por tonitosbass
PESSOAL GOSTARIA DE UMA AJUDA PARA FINALIZAR E CORRIGIR O PROCESSO DO ABAIXO. O INTUITO DESTE FONTE É ACESSAR O BANCO DE DADOS DE OUTRO SISTEMA E INTEGRAR OS DADOS COM O PROTHEUS, OU SEJA, TODOS OS DADOS QUE ESTÃO NO OUTRO SISTEMA DEVEM SER CARREGADOS NO PROTHEUS NO MODULO DOS LIVROS FISCAIS NF DE SAIDA.
SEGUE O FONTE ABAIXO.
DESDE JÁ AGRADEÇO.
LEMBRANDO QUE O QUE QUERIA É SOMENTE A INTEGRAÇÃO MESMO, A PARTE DE GERAÇÃO DE PEDIDO DE VENDA,NÃO É NECESSARIO.
#INCLUDE "Protheus.ch"
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºPrograma ³ SGTCON01 º Autor ³ Leonardo-Kichitaro º Data ³ 26/06/2013 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDescricao ³Conecta no banco intermediario para buscar registros para º±±
±±º ³integracao Protheus/ESL. º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso ³SIGLA º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
User Function SGTCON01()
Local cBcoDad := "MSSQL/INTEGRADADOS"
Local cEndIP := "192.168.0.11"
Local nPorta := 7890
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Define as variáveis da rotina ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
Local lRetorno := .T.
Local lFirst := .T.
Local nTotReg1 := 0
Local nPos := 0
Local nAgluADF := 0
Local cEmpArq := ""
Local cArqDes := ""
Local cQuery := ""
Local cCodCli := ""
Local cCodFor := ""
Local cCGC := ""
Local cProduto := ""
Local cRecFil := ""
Local cCond := "001"
Local aFina050 := {}
Local aCabDTP := {}
Local aLoteDTP := {}
Local aRetDTC2 := {}
Local aCabDTC := {}
Local aItemDTC := {}
Local aItem := {}
Local aCab := {}
Local nRadio1 := 0
Private lMsErroAuto := .F.
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Guarda a conexão atual do top ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
nTarget := AdvConnection()
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Obtem a coneção do source ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
nSource := TCLink( cBcoDad, cEndIP, nPorta )
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Verifica se a coneção origem foi bem sucedida ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
If nSource <= 0
If nRadio1 == 1
Aviso( "Copia Dados",;
"Banco/Conexão: " + cBcoDad + "." + CRLF +;
"Endereço IP: " + cEndIP + "." + CRLF +;
"Porta : " + AllTrim( Str( nPorta ) ) + "." + CRLF +;
"Não foi possível efetuar a coneção no servidor de origem.",;
{ "&Retorna" },3,;
"Conexão Falhou" )
Else
GeraLog("","","2","Não foi possível efetuar a conexão no servidor de origem." + CRLF +;
"Banco/Conexão: " + cBcoDad + "." + CRLF +;
"Endereço IP: " + cEndIP + "." + CRLF +;
"Porta : " + AllTrim( Str( nPorta ) ) + ".")
EndIf
lRetorno := .F.
Return( lRetorno )
EndIf
//Valida LICENCIAMENTO do sistema
If DToS(Date())> "20201231"
If nRadio1 == 1
Aviso( "FALHA TÉCNICA."+Chr(13)+Chr(10)+;
"Entre em contato com a equipe de desenvolvimento.",;
{ "&Retorna" },3,;
"Falha Tecnica" )
Else
GeraLog("","","2","FALHA TÉCNICA."+Chr(13)+Chr(10)+;
"Entre em contato com a equipe de desenvolvimento.")
EndIf
lRetorno := .F.
Return( lRetorno )
EndIf
cQuery := " SELECT * FROM DT6 "
cQuery += " WHERE REGTRA = 'I' "
cQuery += " AND DT6_DOCTMS = '1'"
cQuery := ChangeQuery( cQuery )
DbUseArea( .T., 'TOPCONN', TcGenQry(,,cQuery), "TRBDT6", .T., .F. )
TCSetConn( nTarget )
cProduto := PadR("000719",TamSx3("B1_COD")[1])
DbSelectArea("SB1")
DbSetOrder(1)
DbSeek(xFilial("SB1")+cProduto)
DbSelectArea("TRBDT6")
DbGoTop()
While !TRBDT6->(Eof())
If Empty(TRBDT6->DT6_FILDOC)
TRBDT6->(DbSkip())
Loop
EndIf
cRecFil := cFilAnt
cFilAnt := Iif(AllTrim(Upper(TRBDT6->DT6_FILDOC)) == "SP", "02", AllTrim(TRBDT6->DT6_FILDOC))
aCamposSC5 := {}
aCamposSC6 := {}
//Monta o Cabecalho do Pedido de Venda
aCamposSC5 := { {"C5_TIPO" ,"N" ,Nil},; // Tipo de pedido
{"C5_CLIENTE",SA1->A1_COD ,Nil},; // Codigo do cliente
{"C5_LOJACLI",SA1->A1_LOJA ,Nil},; // Loja do cliente
{"C5_EMISSAO",dDatabase ,Nil},; // Data de emissao
{"C5_CONDPAG",cCond ,Nil},; // Codigo da condicao de pagamanto*
{"C5_DESC1" ,0 ,Nil},; // Percentual de Desconto
{"C5_TIPLIB" ,"1" ,Nil},; // Tipo de Liberacao
{"C5_MOEDA" ,1 ,Nil},; // Moeda
{"C5_TIPOCLI","F" ,Nil}} // Tipo Revendedor/Cons.Final etc..
aItemPV := { {"C6_ITEM" ,"01" ,Nil},; // Numero do Item no Pedido
{"C6_PRODUTO",SB1->B1_COD ,Nil},; // Codigo do Produto
{"C6_QTDVEN" ,1 ,Nil},; // Quantidade Vendida
{"C6_PRUNIT" ,TRBDT6->DT6_VALTOT ,Nil},; // Preco Unitario
{"C6_PRCVEN" ,TRBDT6->DT6_VALTOT ,Nil},; // Preco Unitario Liquido
{"C6_VALOR" ,TRBDT6->DT6_VALTOT ,Nil},; // Valor Total do Item
{"C6_TES" ,"530" ,Nil},; // Tipo de Saida (TES)
{"C6_ENTREG" ,dDataBase ,Nil},; // Data da Entrega
{"C6_UM" ,SB1->B1_UM ,Nil},; // Unidade de Medida Primar.
{"C6_LOCAL" ,SB1->B1_LOCPAD ,Nil},; // Almoxarifado
{"C6_COMIS1" ,0 ,Nil},; // Comissao Vendedor
{"C6_CLI" ,SA1->A1_COD ,Nil},; // Cliente
{"C6_LOJA" ,SA1->A1_LOJA ,Nil},; // Loja do Cliente
{"C6_QTDLIB" ,0 ,Nil},; // Quantidade Liberada
{"C6_DESCONT",0 ,Nil} } // Desconto do item
Aadd(aCamposSC6,aItemPV)
Begin Transaction
IF Len(aCamposSC5) > 0 .And. Len(aCamposSC6) > 0
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Gera pedido de venda da transferencia. ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
MSExecAuto({|x,y,z| Mata410(x,y,z)},aCamposSC5,aCamposSC6,3)
If lMsErroAuto
// MostraErro()
DisarmTransaction()
Else
cNumSC5 := SC5->C5_NUM
// MsgAlert(Alltrim(cNumSC5)+" - Pedido de Venda Gerado Com Sucesso!")
DbSelectArea("SC6")
DbSetOrder(1)
DbSeek(xFilial("SC6")+cNumSC5)
While !SC6->(Eof()) .And. SC6->C6_FILIAL+SC6->C6_NUM == xFilial("SC6")+cNumSC5
MaLibDoFat(SC6->(RecNo()),SC6->C6_QTDVEN,.T.,.T.,.F.,.F.,.F.,.F.)
SC6->(MsUnlockAll())
SC5->(MsUnlockAll())
SC9->(MsUnlockAll())
SB2->(MsUnlockAll())
DbSelectArea("SC6")
SC6->(DbSkip())
EndDo
SC5->(RecLock("SC5",.F.))
SC5->C5_LIBEROK := "S"
SC5->(MsUnlock())
EndIf
Endif
End Transaction
DbSelectArea("TRBDT6")
cFilAnt := cRecFil
TRBDT6->(DbSkip())
EndDo
TRBDT6->(DbCloseArea())
TCSetConn( nSource )
cQuery := " SELECT * FROM DT6 "
cQuery += " WHERE REGTRA = 'I' "
cQuery += " AND DT6_DOCTMS = '1'"
cQuery := ChangeQuery( cQuery )
DbUseArea( .T., 'TOPCONN', TcGenQry(,,cQuery), "TRBDT6", .T., .F. )
aRetDTC2 := {}
DbSelectArea("TRBDT6")
DbGoTop()
TCSetConn( nTarget )
While !TRBDT6->(Eof())
aAdd(aRetDTC2,{TRBDT6->DT6_IDMOV})
TRBDT6->(DbSkip())
EndDo
TRBDT6->(DbCloseArea())
TCSetConn( nSource )
cQuery := " SELECT DISTINCT DTC_FILORI, DTC_IDMOV, COUNT(DTC_IDMOV) DTC_NUMREG FROM DTC "
cQuery += " WHERE REGTRA = 'I' "
cQuery += " AND DTC_NUMNFC <> '' "
cQuery += " AND DTC_DATENT >= '20131231' "
cQuery += " AND DTC_DATENT <= '20131231' "
cQuery += " GROUP BY DTC_FILORI, DTC_IDMOV "
cQuery := ChangeQuery( cQuery )
DbUseArea( .T., 'TOPCONN', TcGenQry(,,cQuery), "TRBDTC", .T., .F. )
TRBDTC->(dbGoTop())
nTotReg:= 0
While TRBDTC->(!Eof())
nTotReg++
TRBDTC->(dbSkip())
EndDo
If nTotReg <= 0
GeraLog("","","2","NENHUM REGISTRO PENDENTE DE IMPORTACAO")
Return(Nil)
EndIf
aLoteDTP := {}
DbSelectArea("TRBDTC")
DbGoTop()
TCSetConn( nTarget )
While !TRBDTC->(Eof())
aCabDTP := {}
If aScan(aRetDTC2, {|x| x[1] == TRBDTC->DTC_IDMOV}) > 0
TRBDTC->(DbSkip())
Loop
EndIf
If Empty(TRBDTC->DTC_FILORI)
TRBDTC->(DbSkip())
Loop
EndIf
cRecFil := cFilAnt
cFilAnt := Iif(AllTrim(Upper(TRBDTC->DTC_FILORI)) == "SP", "02", AllTrim(TRBDTC->DTC_FILORI))
lMsErroAuto := .F.
Aadd(aCabDTP,{'DTP_QTDLOT',TRBDTC->DTC_NUMREG,NIL})
Aadd(aCabDTP,{'DTP_QTDLOT',100,NIL})
Aadd(aCabDTP,{'DTP_QTDDIG',1,NIL})
Aadd(aCabDTP,{'DTP_TIPLOT','1',NIL})//--1 Normal, 2- Refaturamento, 3- Eletronico
Aadd(aCabDTP,{'DTP_STATUS','1',NIL})//--1 -Aberto, 2- Digitado, 3- Calculado, 4- Bloqueado, 5- Erro de Gravação
MsExecAuto({|x,y| TmsA170(x,y)},aCabDTP,3) //3= Inclusão
cFilAnt := cRecFil
If !lMsErroAuto
aAdd(aLoteDTP,{TRBDTC->DTC_IDMOV,DTP->DTP_LOTNFC})
EndIf
DbSelectArea("TRBDTC")
TRBDTC->(DbSkip())
EndDo
TRBDTC->(DbCloseArea())
TCSetConn( nSource )
cQuery := " SELECT * FROM DTC A "
cQuery += " INNER JOIN DT6 B "
cQuery += " ON DT6_IDMOV = DTC_IDMOV "
cQuery += " WHERE A.REGTRA = 'I' "
cQuery += " AND DTC_DATENT >= '20131201' "
cQuery += " AND DTC_DATENT <= '20131231' "
cQuery += " AND DT6_DOCTMS = '2' "
cQuery += " AND B.REGTRA <> 'X' "
cQuery += " ORDER BY DTC_IDMOV "
cQuery := ChangeQuery( cQuery )
DbUseArea( .T., 'TOPCONN', TcGenQry(,,cQuery), "TRBDTC", .T., .F. )
DbSelectArea("TRBDTC")
DbGoTop()
TCSetConn( nTarget )
While !TRBDTC->(Eof())
aCab := {}
aLinha := {}
aItens := {}
aItemDTC := {}
If Empty(TRBDTC->DTC_FILORI)
TRBDTC->(DbSkip())
Loop
EndIf
If Empty(TRBDTC->DTC_NUMNFC) .Or. Valtype("TRBDTC->DTC_NUMNFC") == "U"
TRBDTC->(DbSkip())
Loop
EndIf
If Empty(TRBDTC->DTC_SERNFC)
TRBDTC->(DbSkip())
Loop
EndIf
If Empty(TRBDTC->DT6_DOC) .Or. Empty(TRBDTC->DT6_SERIE)
TRBDTC->(DbSkip())
Loop
EndIf
cRecFil := cFilAnt
cFilAnt := Iif(AllTrim(Upper(TRBDTC->DTC_FILORI)) == "SP", "02", AllTrim(TRBDTC->DTC_FILORI))
If (npos:=aScan(aLoteDTP, {|x| x[1] == TRBDTC->DTC_IDMOV})) <= 0
TRBDTC->(DbSkip())
Loop
EndIf
DbSelectArea("SA1")
DbSetOrder(3)
cCGC := AllTrim(TRBDTC->DTC_CLIREM)+AllTrim(TRBDTC->DTC_LOJREM)
If !DbSeek(xFilial("SA1")+ cCGC )
TRBDTC->(DbSkip())
Loop
EndIf
cCLIREM := SA1->A1_COD
cLOJREM := SA1->A1_LOJA
cESTREM := SA1->A1_EST
cCLICON := SA1->A1_COD
cLOJCON := SA1->A1_LOJA
cESTCON := SA1->A1_EST
cCGC := AllTrim(TRBDTC->DTC_CLIDES)+AllTrim(TRBDTC->DTC_LOJDES)
If !DbSeek(xFilial("SA1")+ cCGC )
TRBDTC->(DbSkip())
Loop
EndIf
cCLIDES := SA1->A1_COD
cLOJDES := SA1->A1_LOJA
cESTDES := SA1->A1_EST
cCGC := AllTrim(TRBDTC->DTC_CLIDEV)+AllTrim(TRBDTC->DTC_LOJDEV)
If !DbSeek(xFilial("SA1")+ cCGC )
TRBDTC->(DbSkip())
Loop
EndIf
cCLIDEV := SA1->A1_COD
cLOJDEV := SA1->A1_LOJA
cESTDEV := SA1->A1_EST
cCGC := AllTrim(TRBDTC->DTC_CLICAL)+AllTrim(TRBDTC->DTC_LOJCAL)
If !DbSeek(xFilial("SA1")+ cCGC )
TRBDTC->(DbSkip())
Loop
EndIf
cCLICAL := SA1->A1_COD
cLOJCAL := SA1->A1_LOJA
cESTCAL := SA1->A1_EST
cCGC := AllTrim(TRBDTC->DT6_CLIDPC)+AllTrim(TRBDTC->DT6_LOJDPC)
If !DbSeek(xFilial("SA1")+ cCGC )
cCLIDPC := ""
cLOJDPC := ""
cESTDPC := ""
Else
cCLIDPC := SA1->A1_COD
cLOJDPC := SA1->A1_LOJA
cESTDPC := SA1->A1_EST
EndIf
//Processa o cancelamento
If !Empty(TRBDTC->DT6_XCANC)
dbSelectArea("SF2")
SF2->(dbSetOrder(1))
If SF2->(dbSeek(xFilial("SF2")+TRBDTC->DT6_DOC+TRBDTC->DT6_SERIE+SA1->A1_COD+SA1->A1_LOJA ))
aRegSD2 := {}
aRegSE1 := {}
aRegSE2 := {}
If MaCanDelF2("SF2",SF2->(RecNo()),@aRegSD2,@aRegSE1,@aRegSE2)
//Estorna o DT6
dbSelectArea("DT6")
DT6->(dbSetOrder(1))
If DT6->(dbSeek(xFilial("DT6")+cFilAnt+TRBDTC->DT6_DOC+TRBDTC->DT6_SERIE ))
DT6->(RecLock("DT6",.F.))
DT6->(dbDelete())
DT6->(MsUnlock())
EndIf
SF2->(MaDelNFS(aRegSD2,aRegSE1,aRegSE2,.F.,.F.,.F.,.F.))
//LOG de estorno
GeraLog(TRBDTC->DT6_DOC,TRBDTC->DT6_SERIE,"1","ESTORNO EFETUADO COM SUCESSO")
//Atualiza tabela no BD intermediario
TCSetConn( nSource )
TCSQLExec("UPDATE DT6 SET REGTRA = 'X' WHERE DT6_IDMOV = " + TRBDTC->DTC_IDMOV)
TCSetConn( nTarget )
Else
GeraLog(TRBDTC->DT6_DOC,TRBDTC->DT6_SERIE,"2","A NOTA FISCAL NAO PODE SER ESTORNADA NO ERP. CONFORME REGRA DE VALIDACAO PADRAO DO SISTEMA")
EndIf
EndIf
TRBDTC->(dbSkip())
Loop
EndIf
DbSelectArea("DT6")
DbSetOrder(1) //DT6_FILIAL+DT6_FILDOC+DT6_DOC+DT6_SERIE
If !Empty(TRBDTC->DT6_DOC) .And. !DbSeek(xFilial("DT6") + cFilAnt + TRBDTC->DT6_DOC + TRBDTC->DT6_SERIE )
DT6->(RecLock("DT6",.T.))
DT6_FILIAL := xFilial('DT6')
DT6_FILDOC := cFilAnt
DT6_DOC := TRBDTC->DT6_DOC
DT6_SERIE := TRBDTC->DT6_SERIE
DT6_FILDES := cFilAnt
DT6_DATEMI := STOD(TRBDTC->DT6_DATEMI)
DT6_HOREMI := SubStr(AllTrim(TRBDTC->DT6_HOREMI),1,2)+":"+SubStr(AllTrim(TRBDTC->DT6_HOREMI),3,2)+":00"
DT6_QTDVOL := TRBDTC->DT6_QTDVOL
DT6_VOLORI := TRBDTC->DT6_QTDVOL
DT6_PESO := TRBDTC->DT6_PESO
DT6_VALMER := TRBDTC->DT6_VALMER
DT6_TIPFRE := TRBDTC->DT6_TIPFRE
DT6_PRZENT := STOD(TRBDTC->DT6_DATEMI)
DT6_FILORI := cFilAnt
DT6_DOCTMS := "2"
DT6_CLIREM := cCLIREM
DT6_LOJREM := cLOJREM
DT6_CLIDES := cCLIDES
DT6_LOJDES := cLOJDES
DT6_CLICON := cCLICON
DT6_LOJCON := cLOJCON
DT6_CLIDPC := cCLIDPC
DT6_LOJDPC := cLOJDPC
DT6_CLIDEV := cCLIDEV
DT6_LOJDEV := cLOJDEV
DT6_DEVFRE := TRBDTC->DT6_DEVFRE
DT6_SERTMS := "2"
DT6_TIPTRA := TRBDTC->DT6_TIPTRA
DT6_STATUS := StrZero(7, Len(DT6->DT6_STATUS))
DT6_PRIPER := StrZero(2, Len(DT6->DT6_PRIPER))
DT6_FIMP := StrZero(0, Len(DT6->DT6_FIMP))
DT6_CLICAL := cCLICAL
DT6_LOJCAL := cLOJCAL
DT6_CDRORI := "SP"
DT6_CDRDES := "SPMTZ"
DT6_CDRCAL := "SPMTZ"
DT6_BLQDOC := "2"
DT6_VALFRE := TRBDTC->DT6_VALFRE
DT6_VALIMP := TRBDTC->DT6_VALIMP
DT6_VALTOT := TRBDTC->DT6_VALTOT
DT6_CODMSG := "000000"
DT6_CHVCTE := TRBDTC->DT6_CHVCTE
DT6_PROCTE := TRBDTC->DT6_PROCTE
DT6_XCF := TRBDTC->DT6_CF
DT6_CDFISC := TRBDTC->DT6_CDFISC
DT6_METRO3 := TRBDTC->DT6_METRO3
DT6_SITCTE := "2"
DT6->(MsUnlock())
If Empty( aCab )
AAdd( aCab, { 'F2_FILIAL' , xFilial("SF2") , Nil } )
AAdd( aCab, { 'F2_CLIENTE' , cCliDev , Nil } )
AAdd( aCab, { 'F2_DOC' , TRBDTC->DT6_DOC , Nil } )
AAdd( aCab, { 'F2_SERIE' , TRBDTC->DT6_SERIE , Nil } )
AAdd( aCab, { 'F2_LOJA' , cLojDev , Nil } )
AAdd( aCab, { 'F2_TIPO' , "N" , Nil } )
AAdd( aCab, { 'F2_TIPOCLI' , "F" , Nil } )
AAdd( aCab, { 'F2_COND' , "001" , Nil } )
AAdd( aCab, { 'F2_VOLUME1' , TRBDTC->DT6_QTDVOL , Nil } )
AAdd( aCab, { 'F2_PLIQUI' , TRBDTC->DT6_PESO , Nil } )
AAdd( aCab, { 'F2_PBRUTO' , TRBDTC->DT6_PESO , Nil } )
AAdd( aCab, { 'F2_EMISSAO' , STOD(TRBDTC->DT6_DATEMI), Nil } )
AAdd( aCab, { 'F2_HORA' , SubStr(Time(),1,5) , Nil } )
AAdd( aCab, { 'F2_REGIAO' , "SPMTZ" , Nil } )
AAdd( aCab, { 'F2_EST' , "SP" , Nil } )
AAdd( aCab, { 'F2_ESPECIE' , "CTE" , Nil } )
AAdd( aCab, { 'F2_NFORI' , TRBDTC->DT6_DOC , Nil } ) // NF Origem
AAdd( aCab, { 'F2_SERIORI' , TRBDTC->DT6_SERIE , Nil } ) // Serie da NF Origem
AAdd( aCab, { 'F2_ITEMORI' , "" , Nil } ) // Item da NF Origem
AAdd( aCab, { 'F2_RECISS' , "" , Nil } ) // Recolhe ISS
AAdd( aCab, { 'F2_MOEDA' , 1 , Nil } )
AAdd( aCab, { 'F2_CLIENT' , cCliDes , Nil } ) //--Cliente Destinatario
AAdd( aCab, { 'F2_LOJENT' , cLojDes , Nil } ) //--Loja Destinatario
AAdd( aCab, { 'F2_VEND1' ," " , Nil } )
AAdd( aCab, { 'F2_CTE' ," " , Nil } )
AAdd( aCab, { 'F2_CHVNFE' ,TRBDTC->DT6_CHVCTE , Nil } )
cTesItem := SGRetTES()
If Empty(cTesItem)
EndIf
AAdd( aLinha, { 'D2_FILIAL' , xFilial("SD2") , Nil } ) // Filial
AAdd( aLinha, { 'D2_TIPO' , "N" , Nil } ) // Tipo
AAdd( aLinha, { 'D2_CLIENTE' , cCliDev , Nil } ) // Cliente
AAdd( aLinha, { 'D2_LOJA' , cLojDev , Nil } ) // Loja
AAdd( aLinha, { 'D2_ITEM' , "01" , Nil } ) // Item
AAdd( aLinha, { 'D2_COD' , "PRODCALC" , Nil } ) // Material
AAdd( aLinha, { 'D2_TP' , "SE" , Nil } ) // Tipo do Material
AAdd( aLinha, { 'D2_UM' , "UN" , Nil } ) // Unidade de medida
AAdd( aLinha, { 'D2_SEGUM' , " " , Nil } ) // Segunda unidade de medida
AAdd( aLinha, { 'D2_LOCAL' , "01" , Nil } ) // Armazem padrao
AAdd( aLinha, { 'D2_SERVIC' , "010" , Nil } ) // Servico
AAdd( aLinha, { 'D2_QUANT' , 1 , Nil } ) // Quantidade
AAdd( aLinha, { 'D2_PRCVEN' , TRBDTC->DT6_VALTOT , Nil } ) // Preco unitario
AAdd( aLinha, { 'D2_TOTAL' , TRBDTC->DT6_VALTOT , Nil } ) // Valor total do item
AAdd( aLinha, { 'D2_VALFRE' , TRBDTC->DT6_VALFRE , Nil } ) // Valor Frete
AAdd( aLinha, { 'D2_PRUNIT' , TRBDTC->DT6_VALTOT , Nil } ) // Preco unitario
AAdd( aLinha, { 'D2_PESO' , TRBDTC->DT6_PESO , Nil } ) // Preco unitario
AAdd( aLinha, { 'D2_EMISSAO' , dDataBase , Nil } ) // Emissao
AAdd( aLinha, { 'D2_EST' , "SP" , Nil } ) // Estado
AAdd( aLinha, { 'D2_TES' , TRBDTC->DT6_CDFISC , Nil } ) // TES
AAdd( aLinha, { 'D2_TES' , "505" , Nil } ) // TES
AAdd( aLinha, { 'D2_CF' , TRBDTC->DT6_CF , Nil } ) // CF
AAdd( aLinha, { 'D2_ALIQISS' , 3 , Nil } ) // Aliq. ISS
AAdd( aLinha, { 'D2_NFORI' , "" , Nil } ) // NF Origem
AAdd( aLinha, { 'D2_SERIORI' , "" , Nil } ) // Serie da NF Origem
AAdd( aLinha, { 'D2_ITEMORI' , "" , Nil } ) // Item da NF Origem
AAdd( aLinha, { 'D2_CONTA' , " " , Nil } ) // Conta Contabil
AAdd( aLinha, { 'D2_CODISS' , " " , Nil } ) // Codigo do ISS
AAdd( aLinha, { 'D2_PICM' , TRBDTC->DT6_ALIQICM , Nil } ) // Item da NF Origem
AAdd( aLinha, { 'D2_BASEICM' , TRBDTC->DT6_BASCALC , Nil } ) // Conta Contabil
AAdd( aLinha, { 'D2_VALIMP' , TRBDTC->DT6_VALIMP , Nil } ) // Codigo do ISS
AAdd(aItens,AClone(aLinha))
aNFS := GeraDoc(cCliDev, cLojDev, "2", aItens, aCab, "SPMTZ", " ", .F., cESTDEV, cESTDEV,;
cESTDEV, "01", {|| .T. }, "UNI", {|| .T. }, {TRBDTC->DT6_DOC,TRBDTC->DT6_SERIE} )
If Len(aNFS)
GeraLog(TRBDTC->DT6_DOC,TRBDTC->DT6_SERIE,"2","A NOTA FISCAL NAO FOI GERADA")
EndIf
If Len(aNFS) > 0 .And. !Empty(aNFS[1])
SF2->(DbSetOrder(2))
If SF2->(DbSeek(xFilial("SF2")+ cCliDev + cLojDev + aNFS[1] + aNFS[2] ))
SF2->(RecLock('SF2',.F.))
SF2->F2_EMISSAO := STOD(TRBDTC->DT6_DATEMI)
SF2->F2_ESPECIE := "CTE"
SF2->F2_VALICM := TRBDTC->DT6_VALIMP
SF2->F2_BASEICM := TRBDTC->DT6_BASCALC
SF2->(MsUnlock())
cTesItem := ""
dbSelectArea("SA1")
SA1->(dbSetOrder(1))
SA1->(dbSeek(xFilial("SA1")+cCliDev+cLojDev ))
SD2->(DbSetOrder(3)) //D2_FILIAL+D2_DOC+D2_SERIE+D2_CLIENTE+D2_LOJA+D2_COD+D2_ITEM
SD2->(DbSeek(xFilial("SD2")+ aNFS[1] + aNFS[2] + cCliDev + cLojDev ))
While !SD2->(Eof()) .And. SD2->D2_FILIAL+SD2->D2_DOC+SD2->D2_SERIE+SD2->D2_CLIENTE+SD2->D2_LOJA == xFilial("SD2")+aNFS[1]+aNFS[2]+cCliDev+cLojDev
SD2->(RecLock('SD2',.F.))
SD2->D2_EMISSAO := STOD(TRBDTC->DT6_DATEMI)
SD2->D2_CF := TRBDTC->DT6_CF
SD2->D2_TES := TRBDTC->DT6_CDFISC
SD2->D2_VALICM := TRBDTC->DT6_VALIMP
SD2->D2_BASEICM := TRBDTC->DT6_BASCALC
SD2->D2_PICM := TRBDTC->DT6_ALIQICM
SD2->(MsUnlock())
cTesItem := SD2->D2_TES
SD2->(DbSkip())
EndDo
//Posiciona na TES para associar a coluna do livro fiscal parametrizada (TRIBUTADA, OUTROS, etc)
cColunaLivro := ""
dbSelectArea("SF4")
SF4->(dbSetOrder(1))
If SF4->(dbSeek(xFilial("SF4")+cTesItem))
cColunaLivro := SF4->F4_LFICM
EndIf
SF3->(DbSetOrder(4))
SF3->(DbSeek(xFilial("SF3")+ SF2->F2_CLIENTE + SF2->F2_LOJA + SF2->F2_DOC + SF2->F2_SERIE ))
While SF3->(!Eof()) .And. SF3->(F3_FILIAL+F3_CLIEFOR+F3_LOJA+F3_NFISCAL+F3_SERIE) == xFilial("SF3")+ SF2->F2_CLIENTE + SF2->F2_LOJA + SF2->F2_DOC + SF2->F2_SERIE
If AllTrim(SF3->F3_ESPECIE) == "CTE"
SF3->(RecLock('SF3',.F.))
SF3->F3_EMISSAO := STOD(TRBDTC->DT6_DATEMI)
SF3->F3_ENTRADA := STOD(TRBDTC->DT6_DATEMI)
SF3->F3_ESPECIE := "CTE"
SF3->F3_ALIQICM := TRBDTC->DT6_ALIQICM
SF3->F3_BASEICM := TRBDTC->DT6_BASCALC
SF3->F3_CFO := TRBDTC->DT6_CF
If cColunaLivro == "T"
SF3->F3_VALICM := TRBDTC->DT6_VALIMP
ElseIf cColunaLivro == "I"
SF3->F3_ISENICM := TRBDTC->DT6_VALIMP
ElseIf cColunaLivro == "O"
SF3->F3_OUTRICM := TRBDTC->DT6_VALIMP
EndIf
SF3->(MsUnlock())
EndIf
SF3->(dbSkip())
EndDo
SFT->(DbSetOrder(1)) //FT_FILIAL+FT_NFISCAL+FT_SERIE
SFT->(DbSeek(xFilial("SFT")+"S"+SF2->F2_SERIE+SF2->F2_DOC+SF2->F2_CLIENTE+SF2->F2_LOJA ))
While !SFT->(Eof()) .And. SFT->(FT_FILIAL+FT_TIPOMOV+FT_SERIE+FT_NFISCAL+FT_CLIEFOR+FT_LOJA) == xFilial("SFT")+"S"+SF2->F2_SERIE+SF2->F2_DOC+SF2->F2_CLIENTE+SF2->F2_LOJA
SFT->(RecLock('SFT',.F.))
SFT->FT_EMISSAO := STOD(TRBDTC->DT6_DATEMI)
SFT->FT_ENTRADA := STOD(TRBDTC->DT6_DATEMI)
SFT->FT_CFOP := TRBDTC->DT6_CF
SFT->FT_ALIQICM := TRBDTC->DT6_ALIQICM
SFT->FT_BASEICM := TRBDTC->DT6_BASCALC
SFT->FT_CFOP := TRBDTC->DT6_CF
If cColunaLivro == "T"
SFT->FT_VALICM := TRBDTC->DT6_VALIMP
ElseIf cColunaLivro == "I"
SFT->FT_ISENICM := TRBDTC->DT6_VALIMP
ElseIf cColunaLivro == "O"
SFT->FT_OUTRICM := TRBDTC->DT6_VALIMP
EndIf
SFT->(MsUnlock())
SFT->(DbSkip())
EndDo
//Atualiza o registros fiscais do SPED
dbSelectArea("CD2")
CD2->(dbSetOrder(1))
CD2->(dbSeek(xFilial("CD2")+"S"+SF2->F2_SERIE+SF2->F2_DOC+SF2->F2_CLIENTE+SF2->F2_LOJA))
While CD2->(!Eof()) .And. CD2->(CD2_FILIAL+CD2_TPMOV+CD2_SERIE+CD2_DOC+CD2_CODCLI+CD2_LOJCLI) == xFilial("CD2")+"S"+SF2->F2_SERIE+SF2->F2_DOC+SF2->F2_CLIENTE+SF2->F2_LOJA
If AllTrim(CD2->CD2_IMP) == "ICM"
CD2->(RecLock("CD2",.F.))
CD2->CD2_BC := TRBDTC->DT6_BASCALC
CD2->CD2_ALIQ := TRBDTC->DT6_ALIQICM
CD2->CD2_VLTRIB := TRBDTC->DT6_VALIMP
CD2->CD2_QTRIB := 1
CD2->(MsUnlock())
EndIf
CD2->(dbSkip())
EndDo
SE1->(DbSetOrder(1))
If SE1->(DbSeek(xFilial("SE1")+ SF2->F2_SERIE + SF2->F2_DOC ))
SE1->(RecLock('SE1',.F.))
SE1->E1_EMISSAO := STOD(TRBDTC->DT6_DATEMI)
SE1->E1_IDFIN := AllTrim(Str(TRBDTC->E1_IDFIN))
SE1->(MsUnlock())
EndIf
EndIf
EndIf //verificar se o sistema esta finalizando este fim de EndIF
EndIf
EndIf
aCabDTC := { {"DTC_FILORI" ,cFilAnt , Nil},;
{"DTC_LOTNFC" ,aLoteDTP[nPos][2] , Nil},;
{"DTC_CLIREM" ,cCLIREM , Nil},;
{"DTC_LOJREM" ,cLOJREM , Nil},;
{"DTC_DATENT" ,dDataBase , Nil},;
{"DTC_CLIDES" ,cCLIDES , Nil},;
{"DTC_LOJDES" ,cLOJDES , Nil},;
{"DTC_CLIDEV" ,cCLIDEV , Nil},;
{"DTC_LOJDEV" ,cLOJDEV , Nil},;
{"DTC_CLICAL" ,cCLICAL , Nil},;
{"DTC_LOJCAL" ,cLOJCAL , Nil},;
{"DTC_CLICON" ,cCLICON , Nil},;
{"DTC_LOJCON" ,cLOJCON , Nil},;
{"DTC_CTRDPC" ,TRBDTC->DT6_DOC , Nil},;
{"DTC_DEVFRE" ,"1" , Nil},;
{"DTC_SERTMS" ,"2" , Nil},;
{"DTC_TIPTRA" ,"1" , Nil},;
{"DTC_SERVIC" ,"010" , Nil},;
{"DTC_TIPNFC" ,"0" , Nil},;
{"DTC_TIPFRE" ,"1" , Nil},;
{"DTC_SELORI" ,"2" , Nil},;
{"DTC_CDRORI" ,"SP" , Nil},;
{"DTC_CDRDES" ,'SPMTZ' , Nil},;
{"DTC_CDRCAL" ,'SPMTZ' , Nil},;
{"DTC_DISTIV" ,'2' , Nil} }
aItem := { {"DTC_NUMNFC" ,TRBDTC->DTC_NUMNFC , Nil},;
{"DTC_SERNFC" ,TRBDTC->DTC_SERNFC , Nil},;
{"DTC_CODPRO" ,"PRODCALC" , Nil},;
{"DTC_CODEMB" ,"CX" , Nil},;
{"DTC_EMINFC" ,dDataBase , Nil},;
{"DTC_QTDVOL" ,TRBDTC->DTC_QTDVOL , Nil},;
{"DTC_PESO" ,TRBDTC->DTC_PESO , Nil},;
{"DTC_DOC" ,TRBDTC->DT6_DOC , Nil},;
{"DTC_SERIE" ,TRBDTC->DT6_SERIE , Nil},;
{"DTC_METRO3" ,TRBDTC->DTC_METRO3 , Nil},;
{"DTC_CTRDPC" ,TRBDTC->DT6_DOC , Nil},;
{"DTC_PESOM3" ,0 , Nil},;
{"DTC_VALOR" ,TRBDTC->DTC_VALOR , Nil},;
{"DTC_VALICM" ,AllTrim(Str(TRBDTC->DT6_VALIMP)) , Nil},;
{"DTC_BASSEG" ,0 , Nil},;
{"DTC_QTDUNI" ,0 , Nil},;
{"DTC_EDI" ,"2" , Nil} }
// {"DTC_VALICM" ,TRBDTC->DT6_VALIMP , Nil},;
aAdd(aItemDTC,aClone(aItem))
U_GRVCTEIT(aCabDTC, aItemDTC, Nil, Nil, 3)
DbSelectArea("DTP")
DbSetOrder(1)
If DbSeek(xFilial("DTP")+ aLoteDTP[nPos][2] )
RecLock('DTP',.F.)
DTP->DTP_STATUS := StrZero(3 ,Len(DTP->DTP_STATUS))
DTP->(MsUnlock())
EndIf
//Atualiza com sucesso no LOG
GeraLog(TRBDTC->DT6_DOC,TRBDTC->DT6_SERIE,"1","")
TCSetConn( nSource )
TCSQLExec("UPDATE DT6 SET REGTRA = 'X' WHERE DT6_IDMOV = " + Iif (ValType(TRBDTC->DTC_IDMOV) == "N",AllTrim(Str(TRBDTC->DTC_IDMOV)),TRBDTC->DTC_IDMOV) )
TCSetConn( nTarget )
cFilAnt := cRecFil
//Daniel Lima - Realiza o Reprocessamento do Livro
aPergM903 := {}
aAdd(aPergM903, STOD(TRBDTC->DT6_DATEMI)) //01 - Data de Emissao do Docto
aAdd(aPergM903, STOD(TRBDTC->DT6_DATEMI)) //02 - Data de Emissao do Docto
aAdd(aPergM903, 2) //03 - Entrada ou Saida
aAdd(aPergM903, TRBDTC->DT6_DOC) //04
aAdd(aPergM903, TRBDTC->DT6_DOC) //05
aAdd(aPergM903, TRBDTC->DT6_SERIE) //06
aAdd(aPergM903, TRBDTC->DT6_SERIE) //07
aAdd(aPergM903, cCliDev) //08
aAdd(aPergM903, cCliDev) //09
aAdd(aPergM903, cLojDev) //10
aAdd(aPergM903, cLojDev) //11
aAdd(aPergM903, xFilial("SF2")) //12
aAdd(aPergM903, xFilial("SF2")) //12
MATA930 (.T.,aPergM903)
mv_par01 := STOD(TRBDTC->DT6_DATEMI)
mv_par02 := STOD(TRBDTC->DT6_DATEMI)
mv_par03 := 2
mv_par04 := TRBDTC->DT6_DOC
mv_par05 := TRBDTC->DT6_DOC
mv_par06 := TRBDTC->DT6_SERIE
mv_par07 := TRBDTC->DT6_SERIE
mv_par08 := cCliDev
mv_par09 := cCliDev
mv_par10 := cLojDev
mv_par11 := cLojDev
A930RPSaida(.T.)
//Fim - Daniel Lima - Realiza o Reprocessamento do Livro
//Atualiza
TRBDTC->(DbSkip())
EndDo
TRBDTC->(DbCloseArea())
TcUnlink(nSource)
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Volta a conexao para o banco target ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
TCSetConn( nTarget )
MsgInfo("Processo finalizado com sucesso")
Return
/*ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿±±
±±³Fun‡„o ³ SGRetTES ³ Autor ³ Leonardo Kichitaro ³ Data ³ 04/10/13 ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´±±
±±³Descri‡„o ³ Retorna TES conforme CFOP. ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³Uso ³ SIGLA ³±±
±±ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß*/
Static Function SGRetTES()
Local cRetTES := ""
If AllTrim(TRBDTC->DT6_CF) $ "5351/6351" .and. Alltrim(TRBDTC->DT6_CDFISC) = "501"
cRetTES := "501"
ElseIf AllTrim(TRBDTC->DT6_CF) $ "5352/6352" .and. Alltrim(TRBDTC->DT6_CDFISC) = "502"
cRetTES := "502"
ElseIf AllTrim(TRBDTC->DT6_CF) $ "5352/6352" .and. Alltrim(TRBDTC->DT6_CDFISC) = "503"
cRetTES := "503"
ElseIf AllTrim(TRBDTC->DT6_CF) = "5353/6353" .and. Alltrim(TRBDTC->DT6_CDFISC) = "504"
cRetTES := "504"
ElseIf AllTrim(TRBDTC->DT6_CF) = "5353/6353" .and. Alltrim(TRBDTC->DT6_CDFISC) = "505"
cRetTES := "505"
ElseIf AllTrim(TRBDTC->DT6_CF) = "5354/6354" .and. Alltrim(TRBDTC->DT6_CDFISC) = "506"
cRetTES := "506"
ElseIf AllTrim(TRBDTC->DT6_CF) = "5354/6354" .and. Alltrim(TRBDTC->DT6_CDFISC) = "507"
cRetTES := "507"
ElseIf AllTrim(TRBDTC->DT6_CF) = "5355/6355" .and. Alltrim(TRBDTC->DT6_CDFISC) = "508"
cRetTES := "508"
ElseIf AllTrim(TRBDTC->DT6_CF) = "5355/6355" .and. Alltrim(TRBDTC->DT6_CDFISC) = "509"
cRetTES := "509"
ElseIf AllTrim(TRBDTC->DT6_CF) = "5356/6356".and. Alltrim(TRBDTC->DT6_CDFISC) = "510"
cRetTES := "510"
ElseIf AllTrim(TRBDTC->DT6_CF) = "5356/6356".and. Alltrim(TRBDTC->DT6_CDFISC) = "511"
cRetTES := "511"
ElseIf AllTrim(TRBDTC->DT6_CF) = "5357/6357" .and. Alltrim(TRBDTC->DT6_CDFISC) = "512"
cRetTES := "512"
ElseIf AllTrim(TRBDTC->DT6_CF) = "5357/6357" .and. Alltrim(TRBDTC->DT6_CDFISC) = "513"
cRetTES := "513"
ElseIf AllTrim(TRBDTC->DT6_CF) = "5932/6932".and. Alltrim(TRBDTC->DT6_CDFISC) = "514"
cRetTES := "514"
EndIf
Return cRetTES
/*ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿±±
±±³Fun‡„o ³ GeraDoc ³ Autor ³ Eduardo de Souza ³ Data ³ 07/12/04 ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´±±
±±³Descri‡„o ³ Geracao de documento sem pedido. ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³Sintaxe ³ GeraDoc(ExpC1,ExpC2,ExpC3,ExpA1) ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³Parametros³ ExpC1 - Cliente ³±±
±±³ ³ ExpC2 - Loja ³±±
±±³ ³ ExpC3 - Documento de Transporte ³±±
±±³ ³ ExpA1 - Array contendo os itens do SD2 ³±±
±±³ ³ ExpC4 - Cliente Destino ³±±
±±³ ³ ExpC5 - Loja Destino ³±±
±±³ ³ ExpC6 - Regiao de Calculo ³±±
±±³ ³ ExpC7 - Numero da Solicitacao de Coleta ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³Uso ³ TMSA200 ³±±
±±ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß*/
Static Function GeraDoc(cCliente,cLoja,cDocTms,aDadosSD2,aDadosSF2,cCdrCal,;
cNumSol,lCalcISS,cEstOri,cEstCal,cEstDev,cFilSol,bTTS,cSerie,bFatSE1,aNumDoc)
Local aStruSD2 := SD2->(dbStruct())
Local aStruSF2 := SF2->(dbStruct())
Local n1Cnt := 0
Local n2Cnt := 0
Local nPos := 0
Local nPosTES := 0
Local aRegSD2 := {}
Local aSF2 := {}
Local aDocOri := {}
Local aItemOri := {}
Local cNumNfs := ""
Local cTexto := ""
Local nPosAliqIss := 0
Local bFiscalSF2 := { || .T. }
Local bFiscalSD2 := { || .T. }
Local cTextoSF2 := ""
Local cEspecie := ""
Local cTipoCli := ""
Local lMostraCtb := .F.
Local lAglutCtb := .F.
Local lCtbOnLine := .F.
Local cCliDest := ''
Local cLojDest := ''
Local lInscr := .T.
Local aAreaSA1 := {}
Local nPosPICM := 0
Local nPosValICM := 0
Local nPosVBsICM := 0
Local nPosValISS := 0
Local nPosVBsISS := 0
Local nPosPrcVen := 0
Local nPosICMRet := 0
Local lValISS := .F.
Local lVBsISS := .F.
Local lPICM := .F.
Local lValICM := .F.
Local lVBsICM := .F.
Local cNumDoc := ''
Default cNumSol := ''
Default cCdrCal := ''
Default lCalcISS := .F.
Default cFilSol := cFilAnt
Default aNumDoc := {}
If Len(aNumDoc) > 0
cNumDoc := aNumDoc[1]
cSerie := aNumDoc[2]
EndIf
cEspecie := "CTE"//A460Especie(cSerie)
//--Carrega grupo de perguntas
Pergunte('TMB200',.F.)
lAglutCtb := mv_par03 == 1
lCtbOnLine := mv_par04 == 1
//-- Alimenta o array contendo os itens da nota fiscal
For n1Cnt := 1 To Len(aDadosSD2)
AAdd( aDocOri, 0 )
AAdd( aItemOri, {} )
For n2Cnt := 1 To Len(aStruSD2)
If (nPos := Ascan(aDadosSD2[n1Cnt], {|x| AllTrim(x[1]) == AllTrim(aStruSD2[n2Cnt][1]) })) > 0
If !lValISS .And. 'D2_VALISS' $ aStruSD2[n2Cnt][1] .And. aDadosSD2[n1Cnt,nPos,2] > 0
// lValISS := .T.
ElseIf !lVBsISS .And. 'D2_BASEISS' $ aStruSD2[n2Cnt][1] .And. aDadosSD2[n1Cnt,nPos,2] > 0
// lVBsISS := .T.
ElseIf !lPICM .And. 'D2_PICM' $ aStruSD2[n2Cnt][1] .And. aDadosSD2[n1Cnt,nPos,2] > 0
// lPICM := .T.
ElseIf !lValICM .And. 'D2_VALICM' $ aStruSD2[n2Cnt][1] .And. aDadosSD2[n1Cnt,nPos,2] > 0
// lValICM := .T.
ElseIf !lVBsICM .And. 'D2_BASEICM' $ aStruSD2[n2Cnt][1] .And. aDadosSD2[n1Cnt,nPos,2] > 0
// lVBsICM := .T.
EndIf
AAdd(aItemOri[n1Cnt],aDadosSD2[n1Cnt,nPos,2])
Else
If aStruSD2[n2Cnt][2] $ "C/M"
AAdd(aItemOri[n1Cnt],"")
ElseIf aStruSD2[n2Cnt][2] == "N"
AAdd(aItemOri[n1Cnt],0)
ElseIf aStruSD2[n2Cnt][2] == "D"
AAdd(aItemOri[n1Cnt],CtoD(" / / "))
ElseIf aStruSD2[n2Cnt][2] == "L"
AAdd(aItemOri[n1Cnt],.F.)
EndIf
EndIf
Next n2Cnt
Next n1Cnt
//-- Alimenta o array contendo o cabecalho da nota fiscal
For n1Cnt := 1 To Len(aStruSF2)
If (nPos := Ascan(aDadosSF2, {|x| AllTrim(x[1]) == AllTrim(aStruSF2[n1Cnt][1]) })) > 0
AAdd(aSF2,aDadosSF2[nPos,2])
Else
If aStruSF2[n1Cnt][2] $ "C/M"
AAdd(aSF2,"")
ElseIf aStruSF2[n1Cnt][2] == "N"
AAdd(aSF2,0)
ElseIf aStruSF2[n1Cnt][2] == "D"
AAdd(aSF2,CtoD(" / / "))
ElseIf aStruSF2[n1Cnt][2] == "L"
AAdd(aSF2,.F.)
EndIf
EndIf
Next n1Cnt
//-- Aliquota do ISS
nPosAliqIss := Ascan(aStruSD2, { |x| AllTrim(x[1]) == 'D2_ALIQISS' } )
If aItemOri[Len(aItemOri),nPosAliqIss] <> SuperGetMv('MV_ALIQISS')
If !Empty(cTexto)
cTexto += ', '
EndIf
If lValISS
//-- Caso exista alteração do valor do ISS, envia parametro para MaFisAlt para não recalcular valores
cTexto += 'MaFisAlt("IT_ALIQISS",aItemOri[nY,nPosAliqIss],nY,.F.,,,,.F.)'
Else
cTexto += 'MaFisAlt("IT_ALIQISS",aItemOri[nY,nPosAliqIss],nY,.F.,,,,.F.)'
EndIf
EndIf
//-- Utilizado em rotinas que importam o documento
If lValISS
nPosValISS := Ascan(aStruSD2, { |x| AllTrim(x[1]) == 'D2_VALISS' } )
nPosPrcVen := Ascan(aStruSD2, { |x| AllTrim(x[1]) == 'D2_PRCVEN' } )
If nPosValISS > 0
If !Empty(cTexto)
cTexto += ', '
EndIf
cTexto += 'MaFisAlt("IT_VALISS",aItemOri[nY,nPosValISS],nY,.F.,,,,.F.)'
EndIf
EndIf
If lVBsISS
nPosVBsISS := Ascan(aStruSD2, { |x| AllTrim(x[1]) == 'D2_BASEISS' } )
If nPosVBsISS > 0
If !Empty(cTexto)
cTexto += ', '
EndIf
cTexto += 'MaFisAlt("IT_VALMERC",aItemOri[nY,nPosPrcVen],nY,.F.,,,,.F.), '
cTexto += 'MaFisAlt("IT_BASEISS",aItemOri[nY,nPosVBsISS],nY,.F.,,,,.F.), '
cTexto += 'MaFisAlt("IT_BASEDUP",aItemOri[nY,nPosVBsISS],nY,.F.,,,,.F.), '
cTexto += 'MaFisAlt("IT_TOTAL" ,aItemOri[nY,nPosVBsISS],nY,.F.,,,,.F.)'
EndIf
EndIf
If lPICM
nPosPICM := Ascan(aStruSD2, { |x| AllTrim(x[1]) == 'D2_PICM' } )
If nPosPICM > 0
If !Empty(cTexto)
cTexto += ', '
EndIf
cTexto += 'MaFisAlt("IT_ALIQICM",aItemOri[nY,nPosPICM],nY,.F.,,,,.F.)'
EndIf
EndIf
If lValICM
nPosValICM := Ascan(aStruSD2, { |x| AllTrim(x[1]) == 'D2_VALICM' } )
If nPosValICM > 0
If !Empty(cTexto)
cTexto += ', '
EndIf
cTexto += 'MaFisAlt("IT_VALICM",aItemOri[nY,nPosValICM],nY,.F.,,,,.F.)'
EndIf
EndIf
If lVBsICM
nPosVBsICM := Ascan(aStruSD2, { |x| AllTrim(x[1]) == 'D2_BASEICM' } )
nPosICMRet := Ascan(aStruSD2, { |x| AllTrim(x[1]) == 'D2_ICMSRET' } )
If nPosVBsICM > 0
If !Empty(cTexto)
cTexto += ', '
EndIf
cTexto += 'MaFisAlt("IT_VALMERC",aItemOri[nY,nPosPrcVen],nY,.F.,,,,.F.), '
cTexto += 'MaFisAlt("IT_BASEICM",aItemOri[nY,nPosVBsICM],nY,.F.,,,,.F.), '
If nPosICMRet > 0
cTexto += 'MaFisAlt("IT_BASEDUP",(aItemOri[nY,nPosVBsICM] - aItemOri[nY,nPosICMRet]),nY,.F.,,,,.F.), '
cTexto += 'MaFisAlt("IT_VALSOL",aItemOri[nY,nPosICMRet],nY,.F.,,,,.F.), '
Else
cTexto += 'MaFisAlt("IT_BASEDUP",aItemOri[nY,nPosVBsICM],nY,.F.,,,,.F.), '
EndIf
cTexto += 'MaFisAlt("IT_TOTAL" ,aItemOri[nY,nPosVBsICM],nY,.F.,,,,.F.) '
EndIf
EndIf
If lValISS .Or. lValICM
//-- Atualiza informações do livro
If !Empty(cTexto)
cTexto += ', '
EndIf
cTexto += 'MaFisTes(SD2->D2_TES,0,nY),MaFisLf(nY,.F.)'
EndIf
//-- Fim do uso em rotinas que importam o documento
If lCalcISS .And. TM200Mun(cCdrCal,cFilSol,cNumSol)
//-- Se o servico a ser executado for no mesmo municipio da transportadora, nao deve ser gerado titulo de
//-- retencao de imposto, pois neste caso, o responsavel pelo recolhimento do imposto e' a propria transportadora
If !Empty(cTexto)
cTexto += ', '
EndIf
cTexto += 'MaFisAlt("NF_RECISS","2",nY,.F.,,,,.F.)'
EndIf
If TYPE("M->C5_VLR_FRT") <> "U"
If !Empty(cTexto)
cTexto += ', '
EndIf
cTexto += 'MaFisAlt("NF_VLR_FRT",M->C5_VLR_FRT)' // Envia Valor_frete para alterar base do ICMS PAUTA
EndIf
If !Empty(cTexto)
bFiscalSD2 := &('{||'+cTexto+'}')
EndIf
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³TRATAMENTO PARA VERIFICAR SE O DESTINATARIO³
//³EH CONTRIBUINTE DO IMPOSTO ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
//--Obtem o cliente destinatario...
//--Verifica primeiro se existe o "Cliente de Entrega" para
//--considerar como destinatario (SF2). Caso nao exista, sera
//--considerado como destinatario da carga o proprio cliente (F2_CLIENTE)
nPos := Ascan( aDadosSF2,{ |x| AllTrim( x[1] ) == "F2_CLIENT" } )
If nPos > 0
cCliDest := aDadosSF2[nPos,2]
cLojDest := StrZero( 1, Len( SA1->A1_LOJA ) )
Else
nPos := Ascan( aDadosSF2,{ |x| AllTrim( x[1] ) == "F2_CLIENTE" } )
If nPos > 0
cCliDest := aDadosSF2[nPos,2]
cLojDest := StrZero( 1, Len( SA1->A1_LOJA ) )
EndIf
EndIf
nPos := Ascan( aDadosSF2,{ |x| AllTrim( x[1] ) == "F2_LOJENT" } )
If nPos > 0
cLojDest := aDadosSF2[nPos,2]
Else
nPos := Ascan( aDadosSF2,{ |x| AllTrim( x[1] ) == "F2_LOJA" } )
If nPos > 0
cLojDest := aDadosSF2[nPos,2]
EndIf
EndIf
SA1->(DbSetOrder(1)) //A1_FILIAL+A1_COD+A1_LOJA
SA1->(MsSeek(xFilial("SA1")+cCliente+cLoja))
cTipoCli := SA1->A1_TIPO
If !Empty(cCliDest) .And. !Empty(cLojDest)
aAreaSA1 := SA1->(GetArea())
SA1->(DbSetOrder(1)) //A1_FILIAL+A1_COD+A1_LOJA
If SA1->(MsSeek(xFilial("SA1")+cCliDest+cLojDest))
lInscr := IIf((Empty(SA1->A1_INSCR).Or."ISENT"$SA1->A1_INSCR.Or."RG"$SA1->A1_INSCR).Or.SA1->A1_CONTRIB=="2",.F.,.T.)
//Se a variavel lInscr retornar True, o cliente nao e inscrito, ao contrario e considerado inscrito
If lInscr
cTextoSF2 += 'MaFisAlt("NF_LINSCR",.T.),'
Else
cTextoSF2 += 'MaFisAlt("NF_LINSCR",.F.),'
EndIf
EndIf
RestArea( aAreaSA1 )
EndIf
cTextoSF2 += 'MaFisAlt( "NF_UFORIGEM", cEstOri ),'
cTextoSF2 += 'MaFisAlt( "NF_UFDEST", cEstCal ),'
cTextoSF2 += 'MaFisAlt( "NF_PNF_UF", cEstDev ),'
cTextoSF2 += 'MaFisAlt( "NF_ESPECIE", cEspecie ),'
cTextoSF2 += 'MaFisAlt( "NF_PNF_TPCLIFOR", cTipoCli )'
bFiscalSF2 := &( '{||' + cTextoSF2 + '}' )
cNumNfs := MaNfs2Nfs(,,cCliente,cLoja,cSerie,lMostraCtb,lAglutCtb,lCtbOnLine,,,,,,,,,{|| aRegSD2 := {} },bTTS,aDocOri,aItemOri,aSF2,.F.,bFiscalSF2,bFiscalSD2,bFatSE1,cNumDoc)
Return { cNumNfs, cSerie }
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºPrograma ³ GeraLog ºAutor ³ FlexLog º Data ³ 30/12/13 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc. ³Geracao do LOG em tabela para consulta posterior º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
Static Function GeraLog(cDocumento,cSerie,cStatus,cObs)
dbSelectArea("SZ2")
SZ2->(dbSetOrder(1))
SZ2->(RecLock("SZ2",.T.))
SZ2->Z2_FILIAL := xFilial("SZ2")
SZ2->Z2_DOC := cDocumento
SZ2->Z2_SERIE := cSerie
SZ2->Z2_STATUS := cStatus
SZ2->Z2_OBS := cObs
SZ2->Z2_DATA := Date()
SZ2->Z2_HORA := Time()
SZ2->(MsUnlock())
Return(Nil)
Ultima edição: 10 anos 6 meses atrás por tonitosbass. Razão: compactar fonte
Por favor Acessar ou Registrar para participar da conversa.
- lalberto
- Desconectado
- Administrador
Menos
Mais
- Postagens: 3676
- Obrigados Recebidos: 6
10 anos 6 meses atrás #22585
por lalberto
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Respondido por lalberto no tópico integração de outro sistema com o protheus
Antonio bom dia, poderia ser mais claro aonde está seu problema ?, da próxima vez compacte o fonte e anexe ao topico ok.
Abraços.
Abraços.
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Por favor Acessar ou Registrar para participar da conversa.
- tonitosbass
- Autor do Tópico
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 8
- Obrigados Recebidos: 0
10 anos 6 meses atrás - 10 anos 6 meses atrás #22610
por tonitosbass
bom dia Luiz Alberto
Desculpa por ter lançado o fonte inteiro sem compactar, é que estava me adaptando a ferrramenta.
E obrigado por responder.
Então oque espero deste bendito fonte é que o mesmo acesse O Banco de dados do Outro Sistema da empresa, faça a leitura dos dados e alimente as tabelas do protheus DTC,DT6 e os livros fiscais.
A unica tabela que esta funcionando e sendo alimentada é a DTP = lote de entrada nf.
Vou enviar o arquivo compacto novamente.
Respondido por tonitosbass no tópico integração de outro sistema com o protheus
bom dia Luiz Alberto
Desculpa por ter lançado o fonte inteiro sem compactar, é que estava me adaptando a ferrramenta.
E obrigado por responder.
Então oque espero deste bendito fonte é que o mesmo acesse O Banco de dados do Outro Sistema da empresa, faça a leitura dos dados e alimente as tabelas do protheus DTC,DT6 e os livros fiscais.
A unica tabela que esta funcionando e sendo alimentada é a DTP = lote de entrada nf.
Vou enviar o arquivo compacto novamente.
Ultima edição: 10 anos 6 meses atrás por tonitosbass.
Por favor Acessar ou Registrar para participar da conversa.
- lalberto
- Desconectado
- Administrador
Menos
Mais
- Postagens: 3676
- Obrigados Recebidos: 6
10 anos 6 meses atrás #22612
por lalberto
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Respondido por lalberto no tópico integração de outro sistema com o protheus
Não precisa se desculpar amigo, então vamos lá, vc não consegue conectar com o banco de origem é esse o problema, ele está no seu servidor ?, vc configurou o ODBC e o Totvs DBACCESS para acessar este banco ? a base é sql ?
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Por favor Acessar ou Registrar para participar da conversa.
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- integração de outro sistema com o protheus
Tempo para a criação da página:0.165 segundos