Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #Include "MATXSPED.ch"
- #Include "Protheus.ch"
- #Include "TbIconn.ch"
- #Define 0210 1
- #Define K001 2
- #Define K100 3
- #Define K200 4
- #Define K210 5
- #Define K215 6
- #Define K220 7
- #Define K230 8
- #Define K235 9
- #Define K250 10
- #Define K255 11
- #Define K260 12
- #Define K265 13
- #Define K270 14
- #Define K275 15
- #Define K280 16
- #Define K300 17
- #Define K301 18
- #Define K302 19
- #Define K990 20
- #Define 0200 21
- #Define K290 22
- #Define K291 23
- #Define K292 24
- STATIC aTmpRegK
- STATIC lPCPREVATU := FindFunction('PCPREVATU')
- /*苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
- 北谀哪哪哪哪穆哪哪哪哪哪哪哪穆哪哪哪穆哪哪哪哪哪哪哪哪哪穆哪哪哪履哪哪哪哪目北
- 北矲un嘺o ?SPDBlocoK ?Autor ?Materiais ?Data ?06/09/16 潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪哪牧哪哪哪牧哪哪哪哪哪哪哪哪哪牧哪哪哪聊哪哪哪哪拇北
- 北矰escricao ?Esta funcao tem o objetivo de recupaderar informacoes de 潮?
- 北? ?Estoque para geracao do Bloco K para o SPED 潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪拇北
- 北砎ersao EFD? ***** 2.0.19 ***** 潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪拇北
- 北砅arametros?dDataDe = Data Inicial para geracao das informacoes 潮?
- 北? ?dDataAte = Data Final para geracao das informacoes 潮?
- 北? ?aAlias = Alias dos arquivos de trabalho 潮?
- 北? ?lEstruMov = Gera registro 0210 por movimento 潮?
- 北? ?lSum = Aglutina produtos com lancamentos no mesmo dia 潮?
- 北? ?lHistor = Se deve gerar historico do registros ou n鉶 潮?
- 北滥哪哪哪哪牧哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁北
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
- 哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌?/
- Function SPDBlocoK(dDataDe,dDataAte,aAlias,aAliProc,lEstruMov,lSum,lGerLogPro,lRepross )
- Local aDate := {}
- Local aTime := {}
- Local aResult := {}
- Local nX
- Local lContinua := .T.
- Local aRegistr := {"0210","K001","K100","K200","K210","K215","K220","K230","K235","K250","K255","K260","K265","K270","K275","K280","K300","K301","K302","K990","0200","K290","K291","K292"}
- Local cMensagem := ""
- Local cIDCV8MOV := ""
- Local dDataFunc := Ctod(" / / ")
- Local cHoraFunc := " "
- Local lAtuFunc := .F.
- Private cTipo00 := If(SuperGetMv("MV_BLKTP00",.F.,"'ME'")== " ","'ME'", SuperGetMv("MV_BLKTP00",.F.,"'ME'")) // 00: Mercadoria Revenda
- Private cTipo01 := If(SuperGetMv("MV_BLKTP01",.F.,"'MP'")== " ","'MP'", SuperGetMv("MV_BLKTP01",.F.,"'MP'")) // 01: Materia-Prima
- Private cTipo02 := If(SuperGetMv("MV_BLKTP02",.F.,"'EM'")== " ","'EM'", SuperGetMv("MV_BLKTP02",.F.,"'EM'")) // 02: Embalagem
- Private cTipo03 := If(SuperGetMv("MV_BLKTP03",.F.,"'PP'")== " ","'PP'", SuperGetMv("MV_BLKTP03",.F.,"'PP'")) // 03: Produto em Processo
- Private cTipo04 := If(SuperGetMv("MV_BLKTP04",.F.,"'PA'")== " ","'PA'", SuperGetMv("MV_BLKTP04",.F.,"'PA'")) // 04: Produto Acabado
- Private cTipo05 := If(SuperGetMv("MV_BLKTP05",.F.,"'SP'")== " ","'SP'", SuperGetMv("MV_BLKTP05",.F.,"'SP'")) // 05: SubProduto
- Private cTipo06 := If(SuperGetMv("MV_BLKTP06",.F.,"'PI'")== " ","'PI'", SuperGetMv("MV_BLKTP06",.F.,"'PI'")) // 06: Produto Intermediario
- Private cTipo10 := If(SuperGetMv("MV_BLKTP10",.F.,"'OI'")== " ","'OI'", SuperGetMv("MV_BLKTP10",.F.,"'OI'")) // 10: Outros Insumos
- Private lEstMov := If(lEstruMov == Nil,.F., lEstruMov)
- Private lNegEst := SuperGetMv("MV_NEGESTR",.F.,.F.)
- Private nRegsto := 0 // Quantidade de Registros Gerados
- Private lCpoBZTP := SBZ->(ColumnPos("BZ_TIPO")) > 0 .AND. SuperGetMV("MV_ARQPROD",.F.,"SB1") == "SBZ"
- Private cVersSped := VerBlocoK(dDataDe)
- Default lSum := .T.
- Default lGerLogPro := .T.
- Default lRepross := .T.
- aResult := GetFuncArray('SPDBlocoK',,,, aDate, aTime)
- If Len(aDate)>0 .And. Len(aTime) > 0
- dDataFunc:= aDate[1]
- cHoraFunc:= aTime[1]
- lAtuFunc := .T.
- EndIf
- If Valtype(aAlias) == "A" .And. Len(aAlias) == Len(aRegistr) .And. Len(aAliProc) == Len(aRegistr)
- ProcLogIni({},STR0023,,@cIDCV8MOV) //"MATXSPED"
- ProcLogAtu(STR0024,STR0025 + FunName() + " "+ Alltrim(DtoC(Date())) + " - " + Alltrim(Time())) //inicio /"Rotina Chamadora: "
- cMensagem := ""
- cMensagem += STR0026 + cVersSped+chr(10)//"Vers鉶 do Leiaute : "
- cMensagem += STR0027+chr(10)//"Parametros de Sistema "
- cMensagem += "MV_NEGESTR : " + iIf(lNegEst,".T.",".F.")+chr(10)
- cMensagem += "MV_PRNFBE : " + iIf(SuperGetMV("MV_PRNFBE" , .T., .F.),".T.",".F.")+chr(10)
- cMensagem += "MV_BLKMTHR : " + cValToChar(SuperGetMV("MV_BLKMTHR" , .T., 1))+chr(10)
- cMensagem += "MV_CADPROD : " + SuperGetMV("MV_CADPROD" , .T., "|SBZ|SB5|SGI|")+chr(10)
- cMensagem += "MV_ARQPROD : " + SuperGetMV("MV_ARQPROD" , .T., "SB1")+chr(10)
- cMensagem += "MV_BLKTP00 : " + cTipo00+chr(10)
- cMensagem += "MV_BLKTP01 : " + cTipo01+chr(10)
- cMensagem += "MV_BLKTP02 : " + cTipo02+chr(10)
- cMensagem += "MV_BLKTP03 : " + cTipo03+chr(10)
- cMensagem += "MV_BLKTP04 : " + cTipo04+chr(10)
- cMensagem += "MV_BLKTP05 : " + cTipo05+chr(10)
- cMensagem += "MV_BLKTP06 : " + cTipo06+chr(10)
- cMensagem += "MV_BLKTP10 : " + cTipo10+chr(10)
- cMensagem += "MV_TMPAD : " + SuperGetMV("MV_TMPAD" , .F., " ")+chr(10)
- cMensagem += STR0034 + iIf(lCpoBZTP,"Sim","N鉶")+chr(10) //"Utilizacao da tabela SBZ com o campo BZ_TIPO : "
- If lAtuFunc
- cMensagem += STR0035 + " " + Alltrim(DtoC(dDataFunc)) + "_" + cHoraFunc +chr(10) //"Ultima aTualiza玢o do MATXSPED: "
- EndIf
- ProcLogAtu('MENSAGEM',"Informa珲es auxiliares "+ Alltrim(DtoC(Date())) + " - " + Alltrim(Time()),cMensagem)
- cMensagem := ""
- If cVersSped < "013"
- lGerLogPro := .F.
- lRepross := .F.
- EndIf
- If cVersSped >= "013"
- // checa se o UPDDISTR foi aplicado
- ChkUpd()
- dbSelectArea("D3E")
- dbSelectArea("D3K")
- dbSelectArea("D3H")
- dbSelectArea("D3I")
- dbSelectArea("D3J")
- dbSelectArea("D3L")
- dbSelectArea("D3M")
- dbSelectArea("D3N")
- dbSelectArea("D3O")
- dbSelectArea("D3P")
- dbSelectArea("D3R")
- dbSelectArea("D3S")
- dbSelectArea("D3T")
- dbSelectArea("D3U")
- dbSelectArea("SVK")
- dbSelectArea("SVS")
- dbSelectArea("SVT")
- dbSelectArea("SVU")
- dbSelectArea("SVV")
- dbSelectArea("SVW")
- dbSelectArea("T4E")
- dbSelectArea("T4F")
- dbSelectArea("T4G")
- dbSelectArea("T4H")
- Else
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
- //?Verifica se o campo Tipo de Producao existe no ambiente ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
- dbSelectArea("SC2")
- If SC2->(FieldPos("C2_TPPR")) == 0
- Aviso("Aten玢o","O campo de Tipo de Produ玢o (C2_TPPR), n鉶 existe no ambiente. O processamento do Bloco K n鉶 ser?realizado.",{"Ok"})
- lContinua := .F.
- EndIf
- EndIf
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Chama o PE SPDFIS001 para realizar a troca dos Tipos ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- TrocaTipo()
- aTmpRegK := {}
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Limpa Log periodo ja apurado. ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- If lGerLogPro
- BlkPrLimp(dDataAte)
- EndIf
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Montagem dos Arquivos de Trabalho ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- ProcLogAtu('MENSAGEM',STR0003+Alltrim(DtoC(Date())) + " - " + Alltrim(Time())) // "Bloco K - Preparando arquivos TEMP: "
- For nX := 1 To Len(aAlias)
- Aadd(aTmpRegK ,SPDCriaTRB(aRegistr[nX],@aAlias[nX]))
- Next nX
- If lContinua .and. (Empty(dDataDe) .OR. Empty(dDataAte))
- lContinua := .F.
- EndIf
- If lContinua
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Gravacao dos Arquivos de Trabalho - Nao alterar a ordem ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- If aAliProc[K200]
- ProcLogAtu('MENSAGEM',STR0004+Alltrim(DtoC(Date())) + " - " + Alltrim(Time()))
- REGK200(aAlias[K200],dDataDe,dDataAte,lRepross,cIDCV8MOV)
- EndIf
- If aAliProc[K210]
- ProcLogAtu('MENSAGEM',STR0005+Alltrim(DtoC(Date())) + " - " + Alltrim(Time()))
- REGK21X(aAlias[K210],aAlias[K215],dDataDe,dDataAte,lGerLogPro,lRepross)
- EndIf
- If aAliProc[K220]
- ProcLogAtu('MENSAGEM',STR0006+Alltrim(DtoC(Date())) + " - " + Alltrim(Time()))
- REGK220(aAlias[K220],dDataDe,dDataAte,lGerLogPro,lRepross)
- EndIf
- If aAliProc[K230]
- ProcLogAtu('MENSAGEM',"### Bloco K - Inicio Valida玢o de Movimentos Antigos : " + Alltrim(DtoC(Date())) + " - " + Alltrim(Time()))
- If lRepross
- REGANTG(dDataDe,dDataAte)
- REGESTOR(dDataDe,dDataAte)
- EndIf
- If cVersSped < '013' //Valida玢o de vers鉶
- ProcLogAtu('MENSAGEM',"### Bloco K - Inicio Registro K235|012 : " + Alltrim(DtoC(Date())) + " - " + Alltrim(Time()))
- REGK235V12(aAlias[K235],dDataDe,dDataAte,aAlias[K270],aAlias[K275])
- ProcLogAtu('MENSAGEM',"### Bloco K - Inicio Registro K230|012 : " + Alltrim(DtoC(Date())) + " - " + Alltrim(Time()))
- REGK230V12(aAlias[K230],aAlias[K235],aAlias[0210],dDataDe,dDataAte)
- Else
- ProcLogAtu('MENSAGEM',"### Bloco K - Inicio Registro K235 : " + Alltrim(DtoC(Date())) + " - " + Alltrim(Time()))
- REGK235(aAlias[K235],dDataDe,dDataAte,aAlias[K270],aAlias[K275],lRepross)
- ProcLogAtu('MENSAGEM',"### Bloco K - Inicio Registro K230 : " + Alltrim(DtoC(Date())) + " - " + Alltrim(Time()))
- REGK230(aAlias[K230],aAlias[K235],aAlias[0210],dDataDe,dDataAte,lRepross)
- EndIf
- EndIf
- If aAliProc[K250]
- ProcLogAtu('MENSAGEM',STR0009+Alltrim(DtoC(Date())) + " - " + Alltrim(Time()))
- REGK250(aAlias[K250],aAlias[K255],aAlias[0210],dDataDe,dDataAte,lSum,lGerLogPro,lRepross)
- EndIf
- If aAliProc[K260]
- If Existblock("REGK26X")
- REGK26X(aAlias[K260],aAlias[K265],dDataDe,dDataAte)
- Else
- If cVersSped >= '013' //Valida玢o de vers鉶
- ProcLogAtu('MENSAGEM',"### Bloco K - Inicio Registro K265 : " + Alltrim(DtoC(Date())) + " - " + Alltrim(Time()))
- REGK265(aAlias[K265],dDataDe,dDataAte,lRepross)
- ProcLogAtu('MENSAGEM',"### Bloco K - Inicio Registro K260 : " + Alltrim(DtoC(Date())) + " - " + Alltrim(Time()))
- REGK260(aAlias[K260],dDataDe,dDataAte,lRepross)
- EndIf
- EndIf
- EndIf
- If aAliProc[K270]
- ProcLogAtu('MENSAGEM',"### Bloco K - Inicio Registro K275|01 : " + Alltrim(DtoC(Date())) + " - " + Alltrim(Time()))
- REGK27X(aAlias[K270],aAlias[K275],dDataDe,dDataAte,,,lGerLogPro,lRepross,aAlias[K280])
- If cVersSped >= '013' //Valida玢o de vers鉶
- ProcLogAtu('MENSAGEM',"### Bloco K - Inicio Registro K275 : " + Alltrim(DtoC(Date())) + " - " + Alltrim(Time()))
- REGK275PRO(aAlias[K275],dDataDe,dDataAte,lRepross)
- ProcLogAtu('MENSAGEM',"### Bloco K - Inicio Registro K270 : " + Alltrim(DtoC(Date())) + " - " + Alltrim(Time()))
- REGK270PRO(aAlias[K270],dDataDe,dDataAte,lRepross)
- EndIf
- EndIf
- If aAliProc[K280]
- ProcLogAtu('MENSAGEM',STR0011+Alltrim(DtoC(Date())) + " - " + Alltrim(Time()))
- REGK280(aAlias[K280],dDataDe,dDataAte,lGerLogPro,lRepross)
- EndIf
- If aAliProc[K290]
- If cVersSped >= '013' //Valida玢o de vers鉶
- ProcLogAtu('MENSAGEM',"### Bloco K - Inicio Registro K292 : " + Alltrim(DtoC(Date())) + " - " + Alltrim(Time()))
- REGK292(aAlias[K292],dDataDe,dDataAte,lRepross)
- ProcLogAtu('MENSAGEM',"### Bloco K - Inicio Registro K290 : " + Alltrim(DtoC(Date())) + " - " + Alltrim(Time()))
- REGK290(aAlias[K290],dDataDe,dDataAte,lRepross)
- ProcLogAtu('MENSAGEM',"### Bloco K - Inicio Registro K291 : " + Alltrim(DtoC(Date())) + " - " + Alltrim(Time()))
- REGK291(aAlias[K291],dDataDe,dDataAte,lRepross)
- EndIf
- EndIf
- If aAliProc[K300]
- ProcLogAtu('MENSAGEM',STR0011+Alltrim(DtoC(Date())) + " - " + Alltrim(Time()))
- REGK300(aAlias[K300],aAlias[K301],aAlias[K302],dDataDe,dDataAte,lGerLogPro,lRepross)
- EndIf
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Gera o Registro 0210 pelas das movimentacoes do periodo ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- If aAliProc[K230] .And. lEstMov
- ProcLogAtu('MENSAGEM',STR0013+Alltrim(DtoC(Date())) + " - " + Alltrim(Time()))
- REG0210Mov(aAlias[K230],aAlias[K235],aAlias[0210],dDataDe,dDataAte)
- EndIf
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Tratamento para producoes com estrutura negativa ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- If aAliProc[K230] .And. lNegEst .And. !lEstMov
- ProcNegEst(aAlias[0210],aAlias[K230],aAlias[K235],dDataDe,dDataAte,lRepross)
- EndIf
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Finaliza a Gravacao dos Registros - Nao alterar a ordem ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- ProcLogAtu('MENSAGEM',STR0014+Alltrim(DtoC(Date())) + " - " + Alltrim(Time()))
- REGK001(aAlias[K001],dDataAte,lRepross)
- REGK100(aAlias[K100],dDataDe,dDataAte,lRepross)
- REGK990(aAlias[K990],dDataDe,lRepross)
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Grava os produtos utilizados nos Registros do Bloco K ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- ProcLogAtu('MENSAGEM',STR0015+Alltrim(DtoC(Date())) + " - " + Alltrim(Time()))
- REG0200(aAlias,aRegistr)
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Posiciona no Primeiro RECNO de cada Arquivo de Trabalho ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- For nX := 1 To Len(aAlias)
- (aAlias[nX])->(dbGoTop())
- Next nX
- EndIf
- ProcLogAtu('FIM',"Rotina Chamadora: "+ FunName() + " "+ Alltrim(DtoC(Date())) + " - " + Alltrim(Time()))
- EndIf
- Return aTmpRegK
- /*苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
- 北谀哪哪哪哪穆哪哪哪哪哪哪哪哪履哪哪哪履哪哪哪哪哪哪哪哪穆哪哪哪履哪哪哪哪目北
- 北矲un嘺o ?SPDCriaTRB ?Autor ?Materiais ?Data ?28/07/14 潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪哪哪聊哪哪哪聊哪哪哪哪哪哪哪哪牧哪哪哪聊哪哪哪哪拇北
- 北矰escricao ?Criacao do arquivo temporario para retorno de informacoes. 潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪拇北
- 北砅arametros?cBloco = Nome do Bloco para geracao arquivo de trabalho 潮?
- 北? ?cAliasTRB = Nome do arquivo de trabalho 潮?
- 北滥哪哪哪哪牧哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁北
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
- 哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌?/
- Static Function SPDCriaTRB(cBloco,cAliasTRB)
- Local cIndice := ""
- Local nX
- Local aLayout := {}
- Local aStrReg := {}
- Default cAliasTRB := ""
- Default cBloco := ""
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Posicoes: [1]Campos / [2]Indices ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- aLayout := SPDLayout(cBloco)
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Criacao do Arquivo de Trabalho ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- If !Empty(cBloco)
- cAliasTRB := UPPER(cBloco)+"_"+CriaTrab(,.F.)
- //
- // aStrReg
- // [1] := Alias da tabela temporaria a ser criada
- // [2] := Nome da tabela temporaria criada via dbcreate no driver sqlite
- // [3,n] := Conjunto de nome de indices da tabela quando a tabela ?cria
- // [4] := Objeto criado via FWTemporaryTable
- //
- aStrReg := {cAliasTRB ,NIL ,{} ,NIL}
- // Tratamento diferenciado devido tabela ser lida em rotina MULTI-THREAD
- If cBloco == "K200"
- aStrReg[2] := "K_"+cAliasTRB
- fWDbCreate(aStrReg[2],aLayout[1],'TOPCONN',.T.)
- dbUseArea(.T.,'TOPCONN',aStrReg[2],aStrReg[1],.T.)
- For nX := 1 to Len(aLayout[2])
- If Substring(cAliasTRB,1,1) == "K"
- cIndice := aStrReg[1]+"_"+Alltrim(StrZero(nX,2))
- Aadd(aStrReg[3] ,cIndice)
- DBCreateIndex(cIndice ,aLayout[2][nX])
- DBSetIndex(cIndice)
- EndIf
- Next nX
- Else
- aStrReg[4] := FWTemporaryTable():New( aStrReg[1] )
- aStrReg[4]:SetFields( aClone(aLayout[1]) )
- For nX := 1 to len(aLayout[2])
- aStrReg[4]:AddIndex(StrZero(nX,2), aClone(aLayout[2,nX]) )
- Next nX
- aStrReg[4]:Create()
- EndIf
- EndIf
- Return aStrReg
- /*苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
- 北谀哪哪哪哪穆哪哪哪哪哪哪哪哪履哪哪哪履哪哪哪哪哪哪哪哪穆哪哪哪履哪哪哪哪目北
- 北矲un嘺o ?SPDLayout ?Autor ?Materiais ?Data ?28/07/14 潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪哪哪聊哪哪哪聊哪哪哪哪哪哪哪哪牧哪哪哪聊哪哪哪哪拇北
- 北矰escricao ?Funcao responsavel pela montagem do layout do bloco 潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪拇北
- 北砅arametros?cBloco = Nome do bloco para geracao do Layout 潮?
- 北滥哪哪哪哪牧哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁北
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
- 哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌*/
- Function SPDLayout(cBloco)
- Local aCampos := {}
- Local aIndices := {}
- Local nTamFil := TamSX3("D1_FILIAL" )[1]
- Local nTamDt := TamSX3("D1_DTDIGIT")[1]
- Local nTamOP := TamSX3("D3_OP" )[1]
- Local nTamCod := TamSX3("B1_COD" )[1]
- Local nTamNSeq := 30
- Local nTamChave := nTamCod + TamSX3("D1_SERIE")[1] + TamSX3("D1_FORNECE")[1] + TamSX3("D1_LOJA")[1]
- // ------ Tamanhos conforme especificado no Guia EFD ------
- Local nTamReg := 4
- Local aTamQtd := {16,If(cVersSped < '013',3,6)}
- Local aTamCmp := {16,6}
- Local aTamPrd := {16,4}
- Local aTamQtdOld := {16,3}
- // --------------------------------------------------------
- Default cBloco := ""
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //? *** ATENCAO!!! *** ?
- //?Antes de realizar alteracoes nos tamanhos dos campos para ?
- //?montagem dos arquivos de trabalho, verificar especificacao ?
- //?deles no Guia Pratico EFD no site do SPED Fiscal(Receita) ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- Do Case
- Case cBloco == "0200"
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Criacao do Arquivo de Trabalho - BLOCO 0200 ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- aCampos := {}
- AADD(aCampos,{"COD_ITEM" ,"C",nTamCod ,0}) // Nao integra Bloco K
- // Indices
- AADD(aIndices,{"COD_ITEM"})
- Case cBloco == "0210"
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Criacao do Arquivo de Trabalho - BLOCO 0210 ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- aCampos := {}
- AADD(aCampos,{"FILIAL" ,"C",nTamFil ,0}) // Nao integra Bloco K
- AADD(aCampos,{"REG" ,"C",nTamReg ,0})
- AADD(aCampos,{"COD_ITEM" ,"C",nTamCod ,0}) // Nao integra Bloco K
- AADD(aCampos,{"COD_I_COMP" ,"C",nTamCod ,0})
- AADD(aCampos,{"QTD_COMP" ,"N",aTamCmp[1],aTamCmp[2]})
- AADD(aCampos,{"QTD_PROD" ,"N",aTamCmp[1],aTamCmp[2]}) // Nao integra Bloco K
- AADD(aCampos,{"QTD_CONS" ,"N",aTamCmp[1],aTamCmp[2]}) // Nao integra Bloco K
- AADD(aCampos,{"PERDA" ,"N",aTamPrd[1],aTamPrd[2]})
- // Indices
- AADD(aIndices,{"FILIAL" ,"COD_ITEM" ,"COD_I_COMP"})
- Case cBloco == "K001"
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Criacao do Arquivo de Trabalho - BLOCO K001 ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- aCampos := {}
- AADD(aCampos,{"FILIAL" ,"C",nTamFil ,0}) // Nao integra Bloco K
- AADD(aCampos,{"REG" ,"C",nTamReg ,0})
- AADD(aCampos,{"IND_MOV" ,"C",1 ,0})
- // Indices
- AADD(aIndices,{"FILIAL"})
- Case cBloco == "K100"
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Criacao do Arquivo de Trabalho - BLOCO K100 ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- aCampos := {}
- AADD(aCampos,{"FILIAL" ,"C",nTamFil ,0}) // Nao integra Bloco K
- AADD(aCampos,{"REG" ,"C",nTamReg ,0})
- AADD(aCampos,{"DT_INI" ,"D",nTamDt ,0})
- AADD(aCampos,{"DT_FIN" ,"D",nTamDt ,0})
- // Indices
- AADD(aIndices,{"FILIAL" ,"DT_INI"})
- Case cBloco == "K200"
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Criacao do Arquivo de Trabalho - BLOCO K200 ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- aCampos := {}
- AADD(aCampos,{"FILIAL" ,"C",nTamFil ,0}) // Nao integra Bloco K
- AADD(aCampos,{"REG" ,"C",nTamReg ,0})
- AADD(aCampos,{"DT_EST" ,"D",nTamDt ,0})
- AADD(aCampos,{"COD_ITEM" ,"C",nTamCod ,0})
- AADD(aCampos,{"QTD" ,"N",aTamQtdOld[1],aTamQtdOld[2]})
- AADD(aCampos,{"IND_EST" ,"C",1 ,0})
- AADD(aCampos,{"COD_PART" ,"C",60 ,0})
- // Indices
- AADD(aIndices,"FILIAL+DTOS(DT_EST)+COD_ITEM+IND_EST+COD_PART") // Indice em formato diferente, por n鉶 utilizar FWTemporaryTable
- Case cBloco == "K210"
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Criacao do Arquivo de Trabalho - BLOCO K210 ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- AADD(aCampos,{"FILIAL" ,"C",nTamFil ,0}) // Nao integra Bloco K
- AADD(aCampos,{"REG" ,"C",nTamReg ,0})
- AADD(aCampos,{"DT_INI_OS" ,"D",nTamDt ,0})
- AADD(aCampos,{"DT_FIN_OS" ,"D",nTamDt ,0})
- AADD(aCampos,{"COD_DOC_OS" ,"C",nTamNSeq ,0})
- AADD(aCampos,{"COD_ITEM_O" ,"C",nTamCod ,0})
- AADD(aCampos,{"QTD_ORI" ,"N",aTamQtd[1],aTamQtd[2]})
- // Indices
- AADD(aIndices,{"FILIAL" ,"COD_DOC_OS" ,"COD_ITEM_O"})
- Case cBloco == "K215"
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Criacao do Arquivo de Trabalho - BLOCO K215 ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- AADD(aCampos,{"FILIAL" ,"C",nTamFil ,0}) // Nao integra Bloco K
- AADD(aCampos,{"REG" ,"C",nTamReg ,0})
- AADD(aCampos,{"COD_DOC_OS" ,"C",nTamNSeq ,0}) // Nao integra Bloco K
- AADD(aCampos,{"COD_ITEM_D" ,"C",nTamCod ,0})
- AADD(aCampos,{"QTD_DES" ,"N",aTamQtd[1],aTamQtd[2]})
- // Indices
- AADD(aIndices,{"FILIAL" ,"COD_DOC_OS" ,"COD_ITEM_D"})
- Case cBloco == "K220"
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Criacao do Arquivo de Trabalho - BLOCO K220 ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- aCampos := {}
- AADD(aCampos,{"FILIAL" ,"C",nTamFil ,0}) // Nao integra Bloco K
- AADD(aCampos,{"REG" ,"C",nTamReg ,0})
- AADD(aCampos,{"DT_MOV" ,"D",nTamDt ,0})
- AADD(aCampos,{"COD_ITEM_O" ,"C",nTamCod ,0})
- AADD(aCampos,{"COD_ITEM_D" ,"C",nTamCod ,0})
- AADD(aCampos,{"QTD_ORI" ,"N",aTamQtd[1],aTamQtd[2]})
- AADD(aCampos,{"QTD_DEST" ,"N",aTamQtd[1],aTamQtd[2]})
- // Indices
- AADD(aIndices,{"FILIAL" ,"DT_MOV" ,"COD_ITEM_O" ,"COD_ITEM_D"})
- Case cBloco == "K230" .Or. cBloco == "K235" .Or. cBloco == "K290" .Or. cBloco == "K291" .Or. cBloco = "K292" .Or. cBloco = "K260" .Or. cBloco = "K265"
- PCPLayout(cBloco,@aCampos,@aIndices,cVersSped)
- Case cBloco == "K250"
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Criacao do Arquivo de Trabalho - BLOCO K250 ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- aCampos := {}
- AADD(aCampos,{"FILIAL" ,"C",nTamFil ,0}) // Nao integra Bloco K
- AADD(aCampos,{"REG" ,"C",nTamReg ,0})
- AADD(aCampos,{"CHAVE" ,"C",nTamChave ,0}) // Nao integra Bloco K
- AADD(aCampos,{"DT_PROD" ,"D",nTamDt ,0})
- AADD(aCampos,{"COD_ITEM" ,"C",nTamCod ,0})
- AADD(aCampos,{"QTD" ,"N",aTamQtd[1],aTamQtd[2]})
- // Indices
- AADD(aIndices,{"FILIAL" ,"CHAVE" ,"COD_ITEM"})
- AADD(aIndices,{"FILIAL" ,"DT_PROD" ,"COD_ITEM"})
- Case cBloco == "K255"
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Criacao do Arquivo de Trabalho - BLOCO K255 ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- aCampos := {}
- AADD(aCampos,{"FILIAL" ,"C",nTamFil ,0}) // Nao integra Bloco K
- AADD(aCampos,{"CHAVE" ,"C",nTamChave ,0}) // Nao integra Bloco K
- AADD(aCampos,{"REG" ,"C",nTamReg ,0})
- AADD(aCampos,{"DT_CONS" ,"D",nTamDt ,0})
- AADD(aCampos,{"COD_ITEM" ,"C",nTamCod ,0})
- AADD(aCampos,{"QTD" ,"N",aTamQtd[1],aTamQtd[2]})
- AADD(aCampos,{"COD_INS_SU" ,"C",nTamCod ,0})
- // Indices
- AADD(aIndices,{"FILIAL" ,"CHAVE" ,"COD_ITEM"})
- AADD(aIndices,{"FILIAL" ,"DT_CONS" ,"COD_ITEM"})
- Case cBloco == "K270"
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Criacao do Arquivo de Trabalho - BLOCO K270 ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- AADD(aCampos,{"FILIAL" ,"C",nTamFil ,0}) // Nao integra Bloco K
- AADD(aCampos,{"REG" ,"C",nTamReg ,0})
- AADD(aCampos,{"CHAVE" ,"C",nTamChave ,0}) // Nao integra Bloco K
- AADD(aCampos,{"DT_INI_AP" ,"D",nTamDt ,0})
- AADD(aCampos,{"DT_FIN_AP" ,"D",nTamDt ,0})
- AADD(aCampos,{"COD_OP_OS" ,"C",nTamOP ,0})
- AADD(aCampos,{"COD_ITEM" ,"C",nTamCod ,0})
- AADD(aCampos,{"QTD_COR_P" ,"N",aTamQtd[1],aTamQtd[2]})
- AADD(aCampos,{"QTD_COR_N" ,"N",aTamQtd[1],aTamQtd[2]})
- AADD(aCampos,{"ORIGEM" ,"C",1 ,0})
- // Indices
- AADD(aIndices,{"FILIAL" ,"CHAVE" ,"DT_INI_AP" ,"DT_FIN_AP" ,"COD_OP_OS" ,"COD_ITEM"})
- AADD(aIndices,{"FILIAL" ,"DT_INI_AP" ,"DT_FIN_AP" ,"COD_OP_OS" ,"COD_ITEM"})
- Case cBloco == "K275"
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Criacao do Arquivo de Trabalho - BLOCO K275 ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- AADD(aCampos,{"FILIAL" ,"C",nTamFil ,0}) // Nao integra Bloco K
- AADD(aCampos,{"REG" ,"C",nTamReg ,0})
- AADD(aCampos,{"CHAVE" ,"C",nTamChave ,0}) // Nao integra Bloco K
- AADD(aCampos,{"COD_OP_OS" ,"C",nTamOP ,0}) // Nao integra Bloco K
- AADD(aCampos,{"COD_ITEM" ,"C",nTamCod ,0})
- AADD(aCampos,{"QTD_COR_P" ,"N",aTamQtd[1],aTamQtd[2]})
- AADD(aCampos,{"QTD_COR_N" ,"N",aTamQtd[1],aTamQtd[2]})
- AADD(aCampos,{"COD_INS_SU" ,"C",nTamCod ,0})
- // Indices
- AADD(aIndices,{"FILIAL" ,"CHAVE" ,"COD_OP_OS" ,"COD_ITEM"})
- AADD(aIndices,{"FILIAL" ,"COD_OP_OS" ,"COD_ITEM"})
- Case cBloco == "K280"
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Criacao do Arquivo de Trabalho - BLOCO K280 ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- AADD(aCampos,{"FILIAL" ,"C",nTamFil ,0}) // Nao integra Bloco K
- AADD(aCampos,{"REG" ,"C",nTamReg ,0})
- AADD(aCampos,{"DT_EST" ,"D",nTamDt ,0})
- AADD(aCampos,{"COD_ITEM" ,"C",nTamCod ,0})
- AADD(aCampos,{"QTD_COR_P" ,"N",aTamQtdOld[1],aTamQtdOld[2]})
- AADD(aCampos,{"QTD_COR_N" ,"N",aTamQtdOld[1],aTamQtdOld[2]})
- AADD(aCampos,{"IND_EST" ,"C",1 ,0})
- AADD(aCampos,{"COD_PART" ,"C",60 ,0})
- // Indices
- AADD(aIndices,{"FILIAL" ,"DT_EST" ,"COD_ITEM" ,"IND_EST" ,"COD_PART"})
- Case cBloco == "K300"
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Criacao do Arquivo de Trabalho - BLOCO K300 ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- aCampos := {}
- AADD(aCampos,{"FILIAL" ,"C",nTamFil ,0}) // Nao integra Bloco K
- AADD(aCampos,{"CHAVE" ,"C",nTamChave ,0}) // Nao integra Bloco K
- AADD(aCampos,{"REG" ,"C",nTamReg ,0})
- AADD(aCampos,{"DT_PROD" ,"D",nTamDt ,0})
- // Indices
- AADD(aIndices,{"FILIAL","CHAVE"})
- Case cBloco == "K301"
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Criacao do Arquivo de Trabalho - BLOCO K301 ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- aCampos := {}
- AADD(aCampos,{"FILIAL" ,"C",nTamFil ,0}) // Nao integra Bloco K
- AADD(aCampos,{"REG" ,"C",nTamReg ,0})
- AADD(aCampos,{"CHAVE" ,"C",nTamChave ,0}) // Nao integra Bloco K
- AADD(aCampos,{"COD_ITEM" ,"C",nTamCod ,0})
- AADD(aCampos,{"QTD" ,"N",aTamQtd[1],aTamQtd[2]})
- // Indices
- AADD(aIndices,{"FILIAL","CHAVE"})
- Case cBloco == "K302"
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Criacao do Arquivo de Trabalho - BLOCO K302 ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- aCampos := {}
- AADD(aCampos,{"FILIAL" ,"C",nTamFil ,0}) // Nao integra Bloco K
- AADD(aCampos,{"REG" ,"C",nTamReg ,0})
- AADD(aCampos,{"CHAVE" ,"C",nTamChave ,0}) // Nao integra Bloco K
- AADD(aCampos,{"COD_ITEM" ,"C",nTamCod ,0})
- AADD(aCampos,{"QTD" ,"N",aTamQtd[1],aTamQtd[2]})
- // Indices
- AADD(aIndices,{"FILIAL","CHAVE"})
- Case cBloco == "K990"
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Criacao do Arquivo de Trabalho - BLOCO K990 ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- aCampos := {}
- AADD(aCampos,{"FILIAL" ,"C",nTamFil ,0}) // Nao integra Bloco K
- AADD(aCampos,{"REG" ,"C",nTamReg ,0})
- AADD(aCampos,{"QTD_LIN_K" ,"N",14 ,0})
- // Indices
- AADD(aIndices,{"FILIAL"})
- EndCase
- Return {aCampos,aIndices}
- /*苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
- 北谀哪哪哪哪穆哪哪哪哪哪哪哪哪履哪哪哪履哪哪哪哪哪哪哪哪穆哪哪哪履哪哪哪哪目北
- 北矲un嘺o ?REGK001 ?Autor ?Materiais ?Data ?28/07/14 潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪哪哪聊哪哪哪聊哪哪哪哪哪哪哪哪牧哪哪哪聊哪哪哪哪拇北
- 北矰escricao ?Funcao responsavel pela gravacao do Registro K001 潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪拇北
- 北砅arametros?cAliasTRB = Alias do arquivo de trabalho do Bloco 潮?
- 北滥哪哪哪哪牧哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁北
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
- 哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌*/
- Static Function REGK001(cAliK001,dDataAte,lRepross)
- Default lRepross := .T.
- Reclock(cAliK001,.T.)
- (cAliK001)->FILIAL := cFilAnt
- (cAliK001)->REG := "K001"
- If nRegsto > 0
- (cAliK001)->IND_MOV := "0" // Existem informacoes no Bloco K
- Else
- (cAliK001)->IND_MOV := "1" // Nao existem informacoes no Bloco K
- EndIf
- (cAliK001)->(MsUnLock())
- nRegsto++
- // grava na tabela de historico
- BlkGrvTab(cAliK001,"D3G",aTmpRegK[K001][4],dDataAte,lRepross)
- Return
- /*苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
- 北谀哪哪哪哪穆哪哪哪哪哪哪哪哪履哪哪哪履哪哪哪哪哪哪哪哪穆哪哪哪履哪哪哪哪目北
- 北矲un嘺o ?REGK100 ?Autor ?Materiais ?Data ?28/07/14 潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪哪哪聊哪哪哪聊哪哪哪哪哪哪哪哪牧哪哪哪聊哪哪哪哪拇北
- 北矰escricao ?Funcao responsavel pela gravacao do Registro K100 潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪拇北
- 北砅arametros?cAliasTRB = Alias do arquivo de trabalho do Bloco 潮?
- 北? ?dDataDe = Data Inicial da Apuracao 潮?
- 北? ?dDataAte = Data Final da Apuracao 潮?
- 北滥哪哪哪哪牧哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁北
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
- 哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌*/
- Static Function REGK100(cAliK100,dDataDe,dDataAte,lRepross)
- Default lRepross := .T.
- Reclock(cAliK100,.T.)
- (cAliK100)->FILIAL := cFilAnt
- (cAliK100)->REG := "K100"
- (cAliK100)->DT_INI := dDataDe
- (cAliK100)->DT_FIN := dDataAte
- (cAliK100)->(MsUnLock())
- nRegsto++
- // grava na tabela de historico
- BlkGrvTab(cAliK100,"D3H",aTmpRegK[K100][4],dDataAte,lRepross)
- Return
- /*苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
- 北谀哪哪哪哪穆哪哪哪哪哪哪哪哪履哪哪哪履哪哪哪哪哪哪哪哪穆哪哪哪履哪哪哪哪目北
- 北矲un嘺o ?REGK200 ?Autor ?Materiais ?Data ?28/07/14 潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪哪哪聊哪哪哪聊哪哪哪哪哪哪哪哪牧哪哪哪聊哪哪哪哪拇北
- 北矰escricao ?Funcao responsavel pela gravacao do Registro K200 潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪拇北
- 北砅arametros?cAliasTRB = Alias do arquivo de trabalho do Bloco 潮?
- 北? ?dDataDe = Data Inicial da Apuracao 潮?
- 北? ?dDataAte = Data Final da Apuracao 潮?
- 北滥哪哪哪哪牧哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁北
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
- 哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌*/
- Static Function REGK200(cAliK200,dDataDe,dDataAte,lRepross,cIDCV8MOV)
- Local cError := ""
- Local aRecTHRs := {}
- Local lRet := .T.
- Local cFilialD3I := xfilial("D3I")
- Local cPeriodo := left(dTOS(dDataAte),6)
- Local cAliProp := GetNextAlias()
- Local nThread := SuperGetMV("MV_BLKMTHR",.F.,1)
- Local nX
- Local aK200 := array(4)
- Private cName := "JobK200"
- Private oIpc
- // limita o numero de threads
- If nThread > 20
- nThread := 20
- EndIf
- aK200[1] := aTmpRegK[K200,1]
- aK200[2] := aTmpRegK[K200,2]
- aK200[3] := aTmpRegK[K200,3,1]
- aK200[4] := 1
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
- //?Monta o arquivo com os produtos que serao processados no K200?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
- ProcLogAtu('MENSAGEM',STR0017+ Alltrim(DtoC(Date())) + " - " + Alltrim(Time())) // "Bloco K - K200|00: Lista SLD Proprio : "
- GetListPrd(@cAliProp,dDataAte,dDataDe)
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
- //?Calcula os melhores RECNOs para cada Thread ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
- ProcLogAtu('MENSAGEM',"Bloco K - K200|00: Calculo das Thread: "+ Alltrim(DtoC(Date())) + " - " + Alltrim(Time()),"Contagem dos produtos a serem processados: "+cvaltochar((cAliProp)->(lastrec())) )
- aRecTHRs := CalcThread(cAliProp,@nThread)
- If nThread <2
- JobK200(0,cName,aK200,cAliProp,dDataAte,aRecTHRs[1,1],aRecTHRs[1,2],lRepross,@cIDCV8MOV)
- Else
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
- //?Prepara o Multi-Thread ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
- oIPC := FWIPCWait():New(cName,10000)
- oIPC:SetThreads(nThread)
- oIPC:SetEnvironment(cEmpAnt,cFilAnt)
- oIPC:Start("JobK200") // Funcao que vai rodar em Thread
- oIPC:SetNoErrorStop(.T.) //Se der erro em alguma thread sai imadiatamente
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
- //?Abre as Threads ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
- For nX := 1 To nThread
- lRet := oIpc:Go(nX,cName,aK200,cAliProp,dDataAte,aRecTHRs[nX][1],aRecTHRs[nX][2],lRepross,@cIDCV8MOV)
- If !lRet
- Exit
- EndIf
- Next nX
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
- //?Finaliza o Multi-Thread ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
- oIPC:Stop()
- cError := oIPC:GetError()
- FreeObj(oIpc)
- EndIf
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
- //?Grava tabela de ?
- //?----------------------------------------------------------------------- ?
- //?Tratamento quando unico codigo de produto esteja contido o saldo de ?
- //?terceiros e,possa ter, saldo proprio e ou saldo de terceito ?
- //?O processamento fica fora do loop principal pois depende da gravacao do ?
- //?IND_EST = 0, pois a CALCEST retorna a QTDE somando o saldo DE TERCEIROS ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
- (cAliK200)->(DbGoTop())
- If lRepross
- BlkGrvTab(cAliK200,'D3I',,dDataAte,.T.,.T.)
- DbSelectArea("D3I")
- While !(cAliK200)->(Eof())
- Reclock("D3I",.T.)
- D3I_FILIAL := cFilialD3I
- D3I_REG := "K200"
- D3I_DT_EST := (cAliK200)->DT_EST
- D3I_COD_IT := (cAliK200)->COD_ITEM
- D3I_QTD := (cAliK200)->QTD
- D3I_IND_ES := (cAliK200)->IND_EST
- D3I_COD_PA := (cAliK200)->COD_PART
- D3I_PERBLK := cPeriodo
- MsUnLock()
- (cAliK200)->(DbSkip())
- Enddo
- EndIf
- If !Empty(cError)
- Help(,,"ERROR",,cError,1,0)
- EndIf
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
- //?Atualiza quantidade de registros na variavel nRegsto ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
- (cAliK200)->(dbGoTop())
- While !(cAliK200)->(Eof())
- nRegsto++
- (cAliK200)->(dbSkip())
- EndDo
- //----------------------------------------//
- // Eliminar arquivos temporarios de banco//
- //---------------------------------------//
- (cAliProp)->(dbCloseArea())
- // neste caso o nome da tabela ?o mesmo que o alias
- If TcCanOpen( cAliProp )
- TcDelFile( cAliProp )
- EndIf
- Return
- /*苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
- 北谀哪哪哪哪穆哪哪哪哪哪哪哪哪履哪哪哪履哪哪哪哪哪哪哪哪穆哪哪哪履哪哪哪哪目北
- 北矲un嘺o ?JobK200 ?Autor ?Materiais ?Data ?30/08/16 潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪哪哪聊哪哪哪聊哪哪哪哪哪哪哪哪牧哪哪哪聊哪哪哪哪拇北
- 北矰escricao ?Funcao responsavel pela gravacao do Registro K200 潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪拇北
- 北砅arametros?nThread = Numero da Thread em Execucao 潮?
- 北? ?cName = Controle interno 潮?
- 北? ?aAliK200 = Alias do arquivo K200 / Indice do K200 潮?
- 北? ?cAliasTmp = Alias TRB de produtos a processar (Proprio) 潮?
- 北? ?dDataAte = Data Final da Apuracao 潮?
- 北? ?nRecIni = Recno inicial a processar 潮?
- 北? ?nRecFin = Recno final a processar 潮?
- 北滥哪哪哪哪牧哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁北
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
- 哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌*/
- Function JobK200(nThread,cName,aK200,cAliasTmp,dDataAte,nRecIni,nRecFin,lRepross,cIDCV8MOV)
- Local nSaldo := 0
- Local cProdAtu := ""
- Local nSldTesN3 := SuperGetMV("MV_SDTESN3",.F.,0)
- Local cAliK200 := ""
- Local cSB9Filial := xFilial("SB9")
- Local cLocProc := GetMvNNR('MV_LOCPROC','99')
- Local aProdDeAte := {}
- Local cCOD_PART := ""
- Local cIND_EST := ""
- DEFAULT lRepross := .T.
- Private cTipo00 := If(SuperGetMv("MV_BLKTP00",.F.,"'ME'")== " ","'ME'", SuperGetMv("MV_BLKTP00",.F.,"'ME'")) // 00: Mercadoria Revenda
- Private cTipo01 := If(SuperGetMv("MV_BLKTP01",.F.,"'MP'")== " ","'MP'", SuperGetMv("MV_BLKTP01",.F.,"'MP'")) // 01: Materia-Prima
- Private cTipo02 := If(SuperGetMv("MV_BLKTP02",.F.,"'EM'")== " ","'EM'", SuperGetMv("MV_BLKTP02",.F.,"'EM'")) // 02: Embalagem
- Private cTipo03 := If(SuperGetMv("MV_BLKTP03",.F.,"'PP'")== " ","'PP'", SuperGetMv("MV_BLKTP03",.F.,"'PP'")) // 03: Produto em Processo
- Private cTipo04 := If(SuperGetMv("MV_BLKTP04",.F.,"'PA'")== " ","'PA'", SuperGetMv("MV_BLKTP04",.F.,"'PA'")) // 04: Produto Acabado
- Private cTipo05 := If(SuperGetMv("MV_BLKTP05",.F.,"'SP'")== " ","'SP'", SuperGetMv("MV_BLKTP05",.F.,"'SP'")) // 05: SubProduto
- Private cTipo06 := If(SuperGetMv("MV_BLKTP06",.F.,"'PI'")== " ","'PI'", SuperGetMv("MV_BLKTP06",.F.,"'PI'")) // 06: Produto Intermediario
- Private cTipo10 := If(SuperGetMv("MV_BLKTP10",.F.,"'OI'")== " ","'OI'", SuperGetMv("MV_BLKTP10",.F.,"'OI'")) // 10: Outros Insumos
- Private lCpoBZTP := SBZ->(ColumnPos("BZ_TIPO")) > 0 .AND. SuperGetMV("MV_ARQPROD",.F.,"SB1") == "SBZ"
- cAliK200 := aK200[1]
- If nThread >0
- DbUseArea(.T.,'TOPCONN',cAliasTmp,cAliasTmp,.T.,.T.)
- dbUseArea(.T.,'TOPCONN',aK200[2],cAliK200,.T.)
- DbSetIndex(aK200[3])
- DBSetOrder(aK200[4])
- EndIf
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Posiciona no RECNO Inicial ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- (cAliasTmp)->(dbGoto(nRecIni))
- // PROCLOGATU gravado "na m鉶", pois em multi-thread n鉶 tem IDCV8 preenchido
- GravaCV8("6", "MATXSPED", "Bloco K - Thread: "+StrZero(nThread,2)+" - K200|01: Inicio SLD Proprio "+ Alltrim(DtoC(Date())) + " - " + Alltrim(Time()), "", "", "", NIL, cIDCV8MOV)
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Processa Saldo de Propriedade do Informante no Informante: IND_EST = 0 ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- cProdAtu := (cAliasTmp)->B9_COD
- cClientAtu := (cAliasTmp)->(D3E_CLIENT+D3E_LOJA)
- aAdd(aProdDeAte,cProdAtu)
- While !(cAliasTmp)->(Eof()) .And. !(cAliasTmp)->(Recno()) > nRecFin
- If cProdAtu == (cAliasTmp)->B9_COD
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Roda a CALCEST apenas quando o produto foi movimentado entre o ultimo ?
- //?fechamento de estoque e a data final de processamento do Bloco K ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- If (cAliasTmp)->STATS == "S" .Or. (cAliasTmp)->B9_LOCAL == cLocProc
- nSaldo += CalcEst((cAliasTmp)->B9_COD,(cAliasTmp)->B9_LOCAL,dDataAte+1,Nil,nSldTesN3==1 )[1]
- ElseIf (cAliasTmp)->STATS == "N"
- nSaldo += (cAliasTmp)->B9_QINI
- EndIf
- (cAliasTmp)->(dbSkip())
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Quando mudar o produto, grava o registro ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- If cProdAtu <> (cAliasTmp)->B9_COD .OR. cClientAtu == (cAliasTmp)->(D3E_CLIENT+D3E_LOJA)
- If !nSaldo == 0
- If Empty(cClientAtu)
- cIND_EST := "0"
- cCOD_PART := space(len((cAliK200)->COD_PART))
- Else
- cIND_EST := "2"
- cCOD_PART := "SA1"+cClientAtu
- EndIf
- If (cAliK200)->(MSSeek(cSB9Filial+dtos(dDataAte)+cProdAtu+cIND_EST+cCOD_PART))
- Reclock(cAliK200,.F.)
- (cAliK200)->QTD += nSaldo
- (cAliK200)->(MsUnLock())
- Else
- Reclock(cAliK200,.T.)
- (cAliK200)->FILIAL := cSB9Filial
- (cAliK200)->REG := "K200"
- (cAliK200)->DT_EST := dDataAte
- (cAliK200)->COD_ITEM := cProdAtu
- (cAliK200)->QTD := nSaldo
- (cAliK200)->IND_EST := cIND_EST
- (cAliK200)->COD_PART := cCOD_PART
- (cAliK200)->(MsUnLock())
- EndIf
- EndIf
- cClientAtu := (cAliasTmp)->(D3E_CLIENT+D3E_LOJA)
- cProdAtu := (cAliasTmp)->B9_COD
- nSaldo := 0
- EndIf
- EndIf
- EndDo
- // PROCLOGATU gravado "na m鉶", pois em multi-thread n鉶 tem IDCV8 preenchido
- GravaCV8("6", "MATXSPED", "Bloco K - Thread: "+StrZero(nThread,2)+" - K200|02: Inicio SLD Terceiros "+ Alltrim(DtoC(Date())) + " - " + Alltrim(Time()), "", "", "", NIL, cIDCV8MOV)
- If Empty(cProdAtu)
- cProdAtu := replicate("Z",len(cProdAtu))
- EndIf
- aAdd(aProdDeAte,cProdAtu)
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
- //?Processa Saldo DE Terceiros para gravacao de IND_EST 2 ?
- //?----------------------------------------------------------------------- ?
- //?Tratamento quando unico codigo de produto esteja contido o saldo de ?
- //?terceiros e,possa ter, saldo proprio e ou saldo de terceito ?
- //?O processamento fica fora do loop principal pois depende da gravacao do ?
- //?IND_EST = 0, pois a CALCEST retorna a QTDE somando o saldo DE TERCEIROS ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
- GetSldTerc("D" ,dDataAte ,aProdDeAte[1] ,aProdDeAte[2] ,cAliK200 ,nSldTesN3 )
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
- //?Processa Saldo EM Terceiros para gravacao de IND_EST 2 ?
- //?----------------------------------------------------------------------- ?
- //?Tratamento quando unico codigo de produto esteja contido o saldo em ?
- //?terceiros e,possa ter, saldo proprio e ou saldo de terceito ?
- //?O processamento fica fora do loop principal pois depende da gravacao do ?
- //?IND_EST = 0, pois a CALCEST retorna a QTDE somando o saldo EM TERCEIROS ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
- GetSldTerc("E" ,dDataAte ,aProdDeAte[1] ,aProdDeAte[2] ,cAliK200 ,nSldTesN3 )
- If nThread >0
- (cAliasTmp)->(dbCloseArea())
- (cAliK200)->(dbCloseArea())
- EndIf
- // PROCLOGATU gravado "na m鉶", pois em multi-thread n鉶 tem IDCV8 preenchido
- GravaCV8("6", "MATXSPED", "Bloco K - Thread: "+StrZero(nThread,2)+" - K200|03: Final Processamento "+ Alltrim(DtoC(Date())) + " - " + Alltrim(Time()), "", "", "", NIL, cIDCV8MOV)
- Return
- /*苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
- 北谀哪哪哪哪穆哪哪哪哪哪哪哪哪履哪哪哪履哪哪哪哪哪哪哪哪穆哪哪哪履哪哪哪哪目北
- 北矲un嘺o ?REGK21X ?Autor ?Materiais ?Data ?11/08/16 潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪哪哪聊哪哪哪聊哪哪哪哪哪哪哪哪牧哪哪哪聊哪哪哪哪拇北
- 北矰escricao ?Funcao responsavel pela gravacao dos Registros K210 e K215 潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪拇北
- 北砅arametros?cAliK210 = Alias do arquivo de trabalho do K210 潮?
- 北? ?cAliK215 = Alias do arquivo de trabalho do K215 潮?
- 北? ?dDataDe = Data Inicial da Apuracao 潮?
- 北? ?dDataAte = Data Final da Apuracao 潮?
- 北滥哪哪哪哪牧哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁北
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
- 哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌*/
- Static Function REGK21X(cAliK210,cAliK215,dDataDe,dDataAte,lGerLogPro,lRepross)
- Local cQuery := ""
- Local cNumSeq := ""
- Local aDesmont := {}
- Local cAliasTmp := GetNextAlias()
- Local cNumSoma := strzero(0,15)
- Local nX
- Default lGerLogPro := .T.
- Default lRepross := .T.
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
- //? OBSERVACAO IMPORTANTE!!! ?
- //?--------------------------------------------------------------------- ?
- //?A ordenacao dos registros nao pode ser alterada, pois ao processar o ?
- //?Reg. K21X espera-se que para cada NUMSEQ de uma desmontagem, primeiro ?
- //?seja processado o RE7 e posteiormente seus RE7. ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
- //?Temporario com as Desmontagens do Periodo ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
- cQuery := "SELECT SD3.D3_FILIAL, SD3.D3_COD, SD3.D3_EMISSAO, SD3.D3_NUMSEQ, SD3.D3_DOC, SD3.D3_CF, Sum(SD3.D3_QUANT) D3_QUANT "
- cQuery += "FROM "+RetSqlName("SD3")+" SD3 "
- cQuery += "JOIN "+RetSqlName("SB1")+" SB1 ON SB1.B1_FILIAL = '"+xFilial('SB1')+"' "
- cQuery += " AND SB1.B1_COD = SD3.D3_COD AND SB1.B1_COD NOT LIKE 'MOD%' "
- cQuery += " AND SB1.B1_CCCUSTO = ' ' "
- cQuery += " AND SB1.D_E_L_E_T_ = ' ' "
- If lCpoBZTP
- cQuery += "LEFT JOIN "+RetSqlName("SBZ")+" SBZ ON SBZ.BZ_FILIAL = '"+xFilial('SBZ')+"' AND SBZ.BZ_COD = SB1.B1_COD AND SBZ.D_E_L_E_T_ = ' ' "
- EndIf
- cQuery += "WHERE SD3.D3_FILIAL = '"+xFilial('SD3')+"' "
- cQuery += " AND SD3.D3_ESTORNO = ' ' AND SD3.D3_CF IN ('DE7','RE7') "
- cQuery += " AND SD3.D3_EMISSAO BETWEEN '"+DtoS(dDataDe)+"' AND '"+DtoS(dDataAte)+"' AND SD3.D_E_L_E_T_ = ' ' "
- If lCpoBZTP
- cQuery += " AND "+MatIsNull()+"(SBZ.BZ_TIPO,SB1.B1_TIPO) "
- Else
- cQuery += " AND SB1.B1_TIPO "
- EndIf
- cQuery += " IN ("+cTipo00+","+cTipo01+","+cTipo02+","+cTipo03+","+cTipo04+","+cTipo05+","+cTipo10+") "
- cQuery += "GROUP BY SD3.D3_FILIAL, SD3.D3_COD, SD3.D3_EMISSAO, SD3.D3_NUMSEQ, SD3.D3_DOC, SD3.D3_CF "
- cQuery += "ORDER BY 4,6 DESC"
- cQuery := ChangeQuery(cQuery)
- dbUseArea(.T.,"TOPCONN",TcGenQry(,,cQuery),cAliasTmp,.T.,.T.)
- While !(cAliasTmp)->(Eof())
- aDesmont := {}
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
- //?Armazena o RE7 na posicao 1 do aDesmont ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
- If (cAliasTmp)->D3_CF == "RE7"
- aDesmont := {{},{}}
- aDesmont[1] := { (cAliasTmp)->D3_FILIAL,;
- StoD((cAliasTmp)->D3_EMISSAO),;
- (cAliasTmp)->D3_NUMSEQ,;
- (cAliasTmp)->D3_DOC,;
- (cAliasTmp)->D3_COD,;
- (cAliasTmp)->D3_QUANT,;
- (cAliasTmp)->D3_CF}
- cNumSeq := (cAliasTmp)->D3_NUMSEQ
- (cAliasTmp)->(dbSkip())
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
- //?Armazena os DE7 na posicao 2 do aDesmont ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
- While !(cAliasTmp)->(Eof()) .And. cNumSeq == (cAliasTmp)->D3_NUMSEQ .And. (cAliasTmp)->D3_CF == "DE7"
- Aadd(aDesmont[2], {(cAliasTmp)->D3_FILIAL,;
- (cAliasTmp)->D3_NUMSEQ,;
- (cAliasTmp)->D3_DOC,;
- (cAliasTmp)->D3_COD,;
- (cAliasTmp)->D3_QUANT,;
- (cAliasTmp)->D3_CF})
- (cAliasTmp)->(dbSkip())
- EndDo
- Else
- (cAliasTmp)->(dbSkip())
- EndIf
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Grava apenas quando existe RE7 e seus DE7's ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- If Len(aDesmont) == 2 .And. Len(aDesmont[2]) > 0
- cNumSoma := SOMA1(cNumSoma)
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
- //?Grava o Registro K210 ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
- Reclock(cAliK210,.T.)
- (cAliK210)->FILIAL := aDesmont[1][1]
- (cAliK210)->REG := "K210"
- (cAliK210)->DT_INI_OS := aDesmont[1][2]
- (cAliK210)->DT_FIN_OS := aDesmont[1][2]
- (cAliK210)->COD_DOC_OS := cNumSoma+aDesmont[1][4]
- (cAliK210)->COD_ITEM_O := aDesmont[1][5]
- (cAliK210)->QTD_ORI := aDesmont[1][6]
- (cAliK210)->(MsUnLock())
- nRegsto++
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
- //?Grava o Registro K215 ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
- For nX := 1 To Len(aDesmont[2])
- Reclock(cAliK215,.T.)
- (cAliK215)->FILIAL := aDesmont[2][nX][1]
- (cAliK215)->REG := "K215"
- (cAliK215)->COD_DOC_OS := cNumSoma+aDesmont[1][4]
- (cAliK215)->COD_ITEM_D := aDesmont[2][nX][4]
- (cAliK215)->QTD_DES := aDesmont[2][nX][5]
- (cAliK215)->(MsUnLock())
- nRegsto++
- Next nX
- EndIf
- EndDo
- (cAliasTmp)->(dbCloseArea())
- // atualiza os registros SD3 que foram processados no periodo
- If lGerLogPro
- BlkPRO21x(dDataDe,dDataAte)
- EndIf
- //----------------------//
- // Grava Tabela de Hist //
- //----------------------//
- BlkGrvTab(cAliK210,"D3J",aTmpRegK[K210][4],dDataAte,lRepross)
- BlkGrvTab(cAliK215,"D3L",aTmpRegK[K215][4],dDataAte,lRepross)
- Return
- /*苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
- 北谀哪哪哪哪穆哪哪哪哪哪哪哪哪履哪哪哪履哪哪哪哪哪哪哪哪穆哪哪哪履哪哪哪哪目北
- 北矲un嘺o ?REGK220 ?Autor ?Materiais ?Data ?28/07/14 潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪哪哪聊哪哪哪聊哪哪哪哪哪哪哪哪牧哪哪哪聊哪哪哪哪拇北
- 北矰escricao ?Funcao responsavel pela gravacao do Registro K220 潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪拇北
- 北砅arametros?cAliasTRB = Alias do arquivo de trabalho do Bloco 潮?
- 北? ?dDataDe = Data Inicial da Apuracao 潮?
- 北? ?dDataAte = Data Final da Apuracao 潮?
- 北滥哪哪哪哪牧哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁北
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
- 哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌*/
- Static Function REGK220(cAliK220,dDataDe,dDataAte,lGerLogPro,lRepross)
- Local cQuery := ""
- Local cAliasTmp := GetNextAlias()
- Default lGerLogPro := .T.
- Default lRepross := .T.
- cQuery := "SELECT SUM(SD3ORI.D3_QUANT) QUANT, SD3ORI.D3_FILIAL, SD3ORI.D3_EMISSAO, "
- cQuery += "SD3ORI.D3_COD CODORI, SD3DES.D3_COD CODDES, SUM(SD3DES.D3_QUANT) QTDDEST FROM "+RetSqlName("SD3")+" SD3ORI "
- cQuery += "JOIN "+RetSqlName("SD3")+" SD3DES ON SD3ORI.D3_NUMSEQ = SD3DES.D3_NUMSEQ AND "
- cQuery += "SD3DES.D_E_L_E_T_ = ' ' AND SD3DES.D3_ESTORNO = ' ' AND "
- cQuery += "SD3ORI.D3_FILIAL = SD3DES.D3_FILIAL AND SD3DES.D3_CF = 'DE4' "
- cQuery += "JOIN "+RetSqlName("SB1")+" SB1ORI ON SB1ORI.B1_COD = SD3ORI.D3_COD AND "
- cQuery += "SB1ORI.B1_FILIAL = '"+xFilial('SB1')+"' AND SB1ORI.D_E_L_E_T_ = ' ' "
- If lCpoBZTP
- cQuery += "LEFT JOIN "+RetSqlName("SBZ")+" SBZORI ON SBZORI.BZ_FILIAL = '"+xFilial('SBZ')+"' AND SBZORI.BZ_COD = SB1ORI.B1_COD AND SBZORI.D_E_L_E_T_ = ' ' "
- EndIf
- cQuery += "JOIN "+RetSqlName("SB1")+" SB1DES ON SB1DES.B1_COD = SD3DES.D3_COD AND "
- cQuery += "SB1DES.B1_FILIAL = '"+xFilial('SB1')+"' AND SB1DES.D_E_L_E_T_ = ' ' "
- If lCpoBZTP
- cQuery += "LEFT JOIN "+RetSqlName("SBZ")+" SBZDES ON SBZDES.BZ_FILIAL = '"+xFilial('SBZ')+"' AND SBZDES.BZ_COD = SB1DES.B1_COD AND SBZDES.D_E_L_E_T_ = ' ' "
- EndIf
- cQuery += "WHERE SD3ORI.D3_FILIAL = '"+xFilial('SD3')+"' AND SD3ORI.D3_COD <> SD3DES.D3_COD AND "
- cQuery += "SD3ORI.D3_CF = 'RE4' AND SD3ORI.D3_EMISSAO BETWEEN '"+DtoS(dDataDe)+"' "
- cQuery += "AND '"+DtoS(dDataAte)+"' AND "
- cQuery += "SB1ORI.B1_CCCUSTO = ' ' AND SB1ORI.B1_COD NOT LIKE 'MOD%' AND "
- cQuery += "SB1DES.B1_CCCUSTO = ' ' AND SB1DES.B1_COD NOT LIKE 'MOD%' AND "
- If lCpoBZTP
- cQuery += MatIsNull()+"(SBZORI.BZ_TIPO,SB1ORI.B1_TIPO) "
- Else
- cQuery += "SB1ORI.B1_TIPO "
- EndIF
- cQuery += " IN ("+cTipo00+","+cTipo01+","+cTipo02+","+cTipo03+","+cTipo04+","+cTipo05+","+cTipo10+") AND "
- If lCpoBZTP
- cQuery += MatIsNull()+"(SBZDES.BZ_TIPO,SB1DES.B1_TIPO) "
- Else
- cQuery += "SB1DES.B1_TIPO "
- EndIF
- cQuery += " IN ("+cTipo00+","+cTipo01+","+cTipo02+","+cTipo03+","+cTipo04+","+cTipo05+","+cTipo10+") AND "
- cQuery += "SD3ORI.D3_ESTORNO = ' ' AND SD3ORI.D_E_L_E_T_ = ' ' "
- cQuery += "GROUP BY SD3ORI.D3_EMISSAO, SD3ORI.D3_COD, SD3DES.D3_COD, SD3ORI.D3_FILIAL "
- cQuery := ChangeQuery(cQuery)
- dbUseArea(.T.,"TOPCONN",TcGenQry(,,cQuery),cAliasTmp,.T.,.T.)
- While !(cAliasTmp)->(Eof())
- Reclock(cAliK220,.T.)
- (cAliK220)->FILIAL := (cAliasTmp)->D3_FILIAL
- (cAliK220)->REG := "K220"
- (cAliK220)->DT_MOV := StoD((cAliasTmp)->D3_EMISSAO)
- (cAliK220)->COD_ITEM_O := (cAliasTmp)->CODORI
- (cAliK220)->COD_ITEM_D := (cAliasTmp)->CODDES
- (cAliK220)->QTD_ORI := (cAliasTmp)->QUANT
- (cAliK220)->QTD_DEST := (cAliasTmp)->QTDDEST
- (cAliK220)->(MsUnLock())
- (cAliasTmp)->(dbSkip())
- nRegsto++
- EndDo
- (cAliasTmp)->(dbCloseArea())
- // atualiza os registros SD3 que foram processados no periodo
- If lGerLogPro
- BlkK220(dDataDe,dDataAte)
- EndIf
- //----------------------//
- // Grava Tabela de Hist //
- //----------------------//
- BlkGrvTab(cAliK220,"D3M",aTmpRegK[K220][4],dDataAte,lRepross)
- Return
- /*苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
- 北谀哪哪哪哪穆哪哪哪哪哪哪哪哪履哪哪哪履哪哪哪哪哪哪哪哪穆哪哪哪履哪哪哪哪目北
- 北矲un嘺o ?REGK250 ?Autor ?Materiais ?Data ?28/07/14 潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪哪哪聊哪哪哪聊哪哪哪哪哪哪哪哪牧哪哪哪聊哪哪哪哪拇北
- 北矰escricao ?Funcao responsavel pela gravacao do Registro K250 潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪拇北
- 北砅arametros?cAliasTRB = Alias do arquivo de trabalho do Bloco 潮?
- 北? ?cAliK255 = Alias do arquivo de trabalho do K255 潮?
- 北? ?cAli0210 = Alias do arquivo de trabalho do 0210 潮?
- 北? ?dDataDe = Data Inicial da Apuracao 潮?
- 北? ?dDataAte = Data Final da Apuracao 潮?
- 北? ?lSum = Data Final da Apuracao 潮?
- 北滥哪哪哪哪牧哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁北
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
- 哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌*/
- Static Function REGK250(cAliK250,cAliK255,cAli0210,dDataDe,dDataAte,lSum,lGerLogPro,lRepross)
- Local cAliasTmp := GetNextAlias()
- Local cQuery := ""
- Default lGerLogPro := .T.
- Default lRepross := .T.
- If cVersSped <"013"
- cQuery := "SELECT SUM(SD3.D3_QUANT) QUANT, SD3.D3_OP, SD3.D3_COD, SD3.D3_FILIAL, SC2.C2_QUANT QTDORI, SD3.D3_EMISSAO DTDIGIT "
- cQuery += "FROM "+RetSqlName("SD3")+" SD3 "
- cQuery += "JOIN "+RetSqlName("SB1")+" SB1 ON SB1.B1_FILIAL = '"+xFilial('SB1')+"' AND SB1.B1_COD = SD3.D3_COD AND SB1.D_E_L_E_T_ = ' ' "
- If lCpoBZTP
- cQuery += "LEFT JOIN "+RetSqlName("SBZ")+" SBZ ON SBZ.BZ_FILIAL = '"+xFilial('SBZ')+"' AND SBZ.BZ_COD = SB1.B1_COD AND SBZ.D_E_L_E_T_ = ' ' "
- EndIf
- cQuery += "JOIN "+RetSqlName("SC2")+" SC2 ON SD3.D3_OP = SC2.C2_NUM||SC2.C2_ITEM||SC2.C2_SEQUEN||SC2.C2_ITEMGRD "
- cQuery += "AND SC2.C2_FILIAL = '"+xFilial('SC2')+"' AND SC2.D_E_L_E_T_ = ' ' AND SC2.C2_ITEM <> 'OS' "
- cQuery += "AND SC2.C2_PRODUTO = SD3.D3_COD AND SC2.C2_TPPR IN ('E') "
- cQuery += "WHERE SD3.D3_FILIAL = '"+xFilial('SD3')+"' "
- cQuery += "AND SD3.D3_ESTORNO = ' ' "
- cQuery += "AND SD3.D3_OP <> ' ' "
- cQuery += "AND SD3.D3_CF IN ('PR0','PR1') "
- cQuery += "AND SD3.D3_COD NOT LIKE 'MOD%' "
- cQuery += "AND SD3.D3_EMISSAO BETWEEN '"+DtoS(dDataDe)+"' AND '"+DtoS(dDataAte)+"' "
- cQuery += "AND SD3.D_E_L_E_T_ = ' ' "
- cQuery += "AND SB1.B1_CCCUSTO = ' ' "
- cQuery += "AND "
- If lCpoBZTP
- cQuery += MatIsNull()+"(SBZ.BZ_TIPO,SB1.B1_TIPO) "
- Else
- cQuery += "SB1.B1_TIPO "
- EndIf
- cQuery += " IN ("+cTipo03+","+cTipo04+") "
- cQuery += "GROUP BY SD3.D3_FILIAL, SD3.D3_OP, SD3.D3_COD, SC2.C2_QUANT, SD3.D3_EMISSAO ORDER BY 4,2 "
- Else
- cQuery := "SELECT SUM(SD3.D3_QUANT) QUANT,SD3.D3_OP,SD3.D3_COD,SD3.D3_FILIAL,SC2.C2_QUANT QTDORI, MAX(SD3.D3_EMISSAO) DTDIGIT "
- cQuery += "FROM "+RetSqlName("SD3")+" SD3 "
- cQuery += "JOIN "+RetSqlName("SB1")+" SB1 ON SB1.B1_FILIAL = '"+xFilial('SB1')+"' AND SB1.B1_COD = SD3.D3_COD AND SB1.D_E_L_E_T_ = ' ' "
- If lCpoBZTP
- cQuery += "LEFT JOIN "+RetSqlName("SBZ")+" SBZ ON SBZ.BZ_FILIAL = '"+xFilial('SBZ')+"' AND SBZ.BZ_COD = SB1.B1_COD AND SBZ.D_E_L_E_T_ = ' ' "
- EndIf
- cQuery += "JOIN "+RetSqlName("SC2")+" SC2 ON SD3.D3_OP = SC2.C2_NUM||SC2.C2_ITEM||SC2.C2_SEQUEN||SC2.C2_ITEMGRD "
- cQuery += "AND SC2.C2_FILIAL = '"+xFilial('SC2')+"' AND SC2.D_E_L_E_T_ = ' ' AND SC2.C2_ITEM <> 'OS' "
- cQuery += "AND SC2.C2_PRODUTO = SD3.D3_COD AND SC2.C2_TPPR IN ('E') "
- cQuery += "WHERE SD3.D3_FILIAL = '"+xFilial('SD3')+"' "
- cQuery += "AND SD3.D3_ESTORNO = ' ' "
- cQuery += "AND SD3.D3_OP <> ' ' "
- cQuery += "AND SD3.D3_CF IN ('PR0','PR1') "
- cQuery += "AND SD3.D3_COD NOT LIKE 'MOD%' "
- cQuery += "AND SD3.D3_EMISSAO BETWEEN '"+DtoS(dDataDe)+"' AND '"+DtoS(dDataAte)+"' "
- cQuery += "AND SD3.D_E_L_E_T_ = ' ' "
- cQuery += "AND SB1.B1_CCCUSTO = ' ' "
- cQuery += "AND "
- If lCpoBZTP
- cQuery += MatIsNull()+"(SBZ.BZ_TIPO,SB1.B1_TIPO) "
- Else
- cQuery += "SB1.B1_TIPO "
- EndIf
- cQuery += " IN ("+cTipo03+","+cTipo04+") "
- cQuery += "AND NOT EXISTS( "
- cQuery += " SELECT 1 FROM "+RetSqlName("SG1")+" SG1 "
- cQuery += " WHERE SG1.G1_FILIAL = '"+xFilial("SG1")+"' "
- cQuery += " AND SG1.G1_COD = SC2.C2_PRODUTO "
- cQuery += " AND SG1.G1_REVINI <= CASE WHEN SC2.C2_REVISAO = ' ' THEN SB1.B1_REVATU ELSE SC2.C2_REVISAO END "
- cQuery += " AND SG1.G1_REVFIM >= CASE WHEN SC2.C2_REVISAO = ' ' THEN SB1.B1_REVATU ELSE SC2.C2_REVISAO END "
- cQuery += " AND SG1.G1_QUANT < 0 "
- cQuery += " AND SG1.G1_INI <= '"+DTOS(dDataDe)+"' "
- cQuery += " AND SG1.G1_FIM >= '"+DTOS(dDataAte)+"' "
- cQuery += " AND SG1.D_E_L_E_T_ = ' ' "
- cQuery += " ) "
- cQuery += "GROUP BY SD3.D3_FILIAL, SD3.D3_OP, SD3.D3_COD, SC2.C2_QUANT ORDER BY 4,2 "
- EndIf
- cQuery := ChangeQuery(cQuery)
- dbUseArea(.T.,"TOPCONN",TcGenQry(,,cQuery),cAliasTmp,.T.,.T.)
- While !(cAliasTmp)->(Eof())
- If REGK255(cAliK255,dDataDe,dDataAte,(cAliasTmp)->D3_OP)
- Reclock(cAliK250,.T.)
- (cAliK250)->FILIAL := (cAliasTmp)->D3_FILIAL
- (cAliK250)->REG := "K250"
- (cAliK250)->CHAVE := (cAliasTmp)->D3_OP
- (cAliK250)->DT_PROD := StoD((cAliasTmp)->DTDIGIT)
- (cAliK250)->COD_ITEM := (cAliasTmp)->D3_COD
- (cAliK250)->QTD := (cAliasTmp)->QUANT
- (cAliK250)->(MsUnLock())
- nRegsto++
- EndIf
- (cAliasTmp)->(dbSkip())
- EndDo
- // atualiza os registros SD3 que foram processados no periodo
- If lGerLogPro
- BlkPro250(dDataDe,dDataAte)
- BlkPro255(dDataDe,dDataAte)
- EndIf
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Gravacao do Registro 0210 com base nas entradas das NF's ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- If !(cAliK250)->(Eof())
- REG0210Ter(cAli0210,cAliK250,cAliK255)
- EndIf
- (cAliasTmp)->(dbCloseArea())
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
- //?Soma e aglutina produtos e insumos com lancamentos no mesmo dia ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
- If lSum
- SumK250(cAliK250,cAliK255)
- EndIf
- //----------------------//
- // Grava Tabela de Hist //
- //----------------------//
- BlkGrvTab(cAliK250,"D3N",aTmpRegK[K250][4],dDataAte,lRepross)
- BlkGrvTab(cAliK255,"D3O",aTmpRegK[K255][4],dDataAte,lRepross)
- Return
- /*苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
- 北谀哪哪哪哪穆哪哪哪哪哪哪哪哪履哪哪哪履哪哪哪哪哪哪哪哪穆哪哪哪履哪哪哪哪目北
- 北矲un嘺o ?REGK255 ?Autor ?Materiais ?Data ?28/07/14 潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪哪哪聊哪哪哪聊哪哪哪哪哪哪哪哪牧哪哪哪聊哪哪哪哪拇北
- 北矰escricao ?Funcao responsavel pela gravacao do Registro K255 潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪拇北
- 北砅arametros?cAliasTRB = Alias do arquivo de trabalho do Bloco 潮?
- 北? ?dDataDe = Data Inicial da Apuracao 潮?
- 北? ?dDataAte = Data Final da Apuracao 潮?
- 北? ?cOP = Numero da Ordem de Producao 潮?
- 北滥哪哪哪哪牧哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁北
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
- 哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌*/
- Static Function REGK255(cAliK255,dDataDe,dDataAte,cOP,lGerLogPro,lRepross)
- Local cAliasTmp := GetNextAlias()
- Local cQuery := ""
- Local lRet := .F.
- Default lGerLogPro := .T.
- Default lRepross := .T.
- If cVersSped <"013"
- cQuery := "SELECT SUM(CASE WHEN SD3.D3_CF LIKE ('DE%') THEN (SD3.D3_QUANT*-1) "
- cQuery += "WHEN SD3.D3_CF LIKE ('RE%') THEN (SD3.D3_QUANT) ELSE 0 END) QUANT, "
- cQuery += "SD3.D3_COD, SD3.D3_OP, SD3.D3_EMISSAO DTDIGIT, SD3.D3_FILIAL FROM "+RetSqlName("SD3")+" SD3 "
- cQuery += "JOIN "+RetSqlName("SB1")+" SB1 ON SB1.B1_FILIAL = '"+xFilial('SB1')+"' AND SB1.B1_COD = SD3.D3_COD AND SB1.D_E_L_E_T_ = ' ' "
- If lCpoBZTP
- cQuery += "LEFT JOIN "+RetSqlName("SBZ")+" SBZ ON SBZ.BZ_FILIAL = '"+xFilial('SBZ')+"' AND SBZ.BZ_COD = SB1.B1_COD AND SBZ.D_E_L_E_T_ = ' ' "
- EndIf
- cQuery += "JOIN "+RetSqlName("SC2")+" SC2 ON SD3.D3_OP = SC2.C2_NUM||SC2.C2_ITEM||SC2.C2_SEQUEN||SC2.C2_ITEMGRD "
- cQuery += "AND SC2.C2_FILIAL = '"+xFilial('SC2')+"' AND SC2.D_E_L_E_T_ = ' ' AND SC2.C2_ITEM <> 'OS' AND SC2.C2_TPPR IN ('E') "
- cQuery += "WHERE SD3.D3_FILIAL = '"+xFilial('SD3')+"' AND SD3.D_E_L_E_T_ = ' ' "
- cQuery += "AND SD3.D3_ESTORNO = ' ' AND SD3.D3_OP = '"+ cOP +"' "
- cQuery += "AND (SD3.D3_CF LIKE ('RE%') OR SD3.D3_CF LIKE ('DE%')) AND SB1.B1_CCCUSTO = ' ' "
- cQuery += "AND SB1.B1_COD NOT LIKE 'MOD%' AND D3_EMISSAO BETWEEN '"+DtoS(dDataDe)+"' AND '"+DtoS(dDataAte)+"' "
- cQuery += "AND SD3.D_E_L_E_T_ = ' ' AND D3_CF <> 'DE1' "
- cQuery += "AND "
- If lCpoBZTP
- cQuery += MatIsNull()+"(SBZ.BZ_TIPO,SB1.B1_TIPO) "
- Else
- cQuery += "SB1.B1_TIPO "
- EndIf
- cQuery += " IN ("+cTipo00+","+cTipo01+","+cTipo02+","+cTipo03+","+cTipo04+","+cTipo05+","+cTipo10+") "
- cQuery += "GROUP BY SD3.D3_EMISSAO, SD3.D3_OP, SD3.D3_COD, SD3.D3_FILIAL "
- cQuery += "ORDER BY 4,3,2"
- Else
- cQuery := "SELECT SUM(CASE WHEN SD3.D3_CF LIKE ('DE%') THEN (SD3.D3_QUANT*-1) "
- cQuery += "WHEN SD3.D3_CF LIKE ('RE%') THEN (SD3.D3_QUANT) ELSE 0 END) QUANT, "
- cQuery += "SD3.D3_COD, SD3.D3_OP, MAX(SD3.D3_EMISSAO) DTDIGIT, SD3.D3_FILIAL "
- cQuery += "FROM "+RetSqlName("SD3")+" SD3 "
- cQuery += "JOIN "+RetSqlName("SB1")+" SB1 ON SB1.B1_FILIAL = '"+xFilial('SB1')+"' AND SB1.B1_COD = SD3.D3_COD AND SB1.D_E_L_E_T_ = ' ' "
- If lCpoBZTP
- cQuery += "LEFT JOIN "+RetSqlName("SBZ")+" SBZ ON SBZ.BZ_FILIAL = '"+xFilial('SBZ')+"' AND SBZ.BZ_COD = SB1.B1_COD AND SBZ.D_E_L_E_T_ = ' ' "
- EndIf
- cQuery += "JOIN "+RetSqlName("SC2")+" SC2 ON SD3.D3_OP = SC2.C2_NUM||SC2.C2_ITEM||SC2.C2_SEQUEN||SC2.C2_ITEMGRD "
- cQuery += "AND SC2.C2_FILIAL = '"+xFilial('SC2')+"' AND SC2.D_E_L_E_T_ = ' ' AND SC2.C2_ITEM <> 'OS' AND SC2.C2_TPPR IN ('E') "
- cQuery += "WHERE SD3.D3_FILIAL = '"+xFilial('SD3')+"' "
- cQuery += "AND SD3.D3_ESTORNO = ' ' AND SD3.D3_OP = '"+ cOP +"' "
- cQuery += "AND (SD3.D3_CF LIKE ('RE%') OR SD3.D3_CF LIKE ('DE%')) AND SB1.B1_CCCUSTO = ' ' "
- cQuery += "AND SB1.B1_COD NOT LIKE 'MOD%' "
- cQuery += "AND D3_EMISSAO BETWEEN '"+DtoS(dDataDe)+"' AND '"+DtoS(dDataAte)+"' "
- cQuery += "AND SD3.D3_CF <> 'DE1' "
- cQuery += "AND SD3.D_E_L_E_T_ = ' ' "
- cQuery += "AND "
- If lCpoBZTP
- cQuery += MatIsNull()+"(SBZ.BZ_TIPO,SB1.B1_TIPO) "
- Else
- cQuery += "SB1.B1_TIPO "
- EndIf
- cQuery += " IN ("+cTipo00+","+cTipo01+","+cTipo02+","+cTipo03+","+cTipo04+","+cTipo05+","+cTipo10+") "
- cQuery += "GROUP BY SD3.D3_OP, SD3.D3_COD, SD3.D3_FILIAL "
- cQuery += "ORDER BY 4,3,2"
- Endif
- cQuery := ChangeQuery(cQuery)
- dbUseArea(.T.,"TOPCONN",TcGenQry(,,cQuery),cAliasTmp,.T.,.T.)
- If !(cAliasTmp)->(Eof())
- lRet := .T.
- EndIf
- While !(cAliasTmp)->(Eof())
- Reclock(cAliK255,.T.)
- (cAliK255)->FILIAL := (cAliasTmp)->D3_FILIAL
- (cAliK255)->REG := "K255"
- (cAliK255)->CHAVE := (cAliasTmp)->D3_OP
- (cAliK255)->DT_CONS := StoD((cAliasTmp)->DTDIGIT)
- (cAliK255)->COD_ITEM := (cAliasTmp)->D3_COD
- (cAliK255)->QTD := (cAliasTmp)->QUANT
- (cAliK255)->COD_INS_SU := GetSubst((cAliasTmp)->D3_COD,(cAliasTmp)->D3_OP,dDataDe,dDataAte)
- (cAliK255)->(MsUnLock())
- nRegsto++
- (cAliasTmp)->(dbSkip())
- EndDo
- (cAliasTmp)->(dbCloseArea())
- Return lRet
- /*苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
- 北谀哪哪哪哪穆哪哪哪哪哪哪哪哪履哪哪哪履哪哪哪哪哪哪哪哪穆哪哪哪履哪哪哪哪目北
- 北矲un嘺o ?REGK27X ?Autor ?Materiais ?Data ?11/08/16 潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪哪哪聊哪哪哪聊哪哪哪哪哪哪哪哪牧哪哪哪聊哪哪哪哪拇北
- 北矰escricao ?Funcao responsavel pela gravacao dos Registros K270 e K275 潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪拇北
- 北砅arametros?cAliK270 = Alias do arquivo de trabalho do K270 潮?
- 北? ?cAliK275 = Alias do arquivo de trabalho do K275 潮?
- 北? ?dDataDe = Data Inicial da Apuracao 潮?
- 北? ?dDataAte = Data Final da Apuracao 潮?
- 北滥哪哪哪哪牧哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁北
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
- 哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌*/
- Function REGK27X(cAliK270,cAliK275,dDataDe,dDataAte,aProdNeg,cBlKCor,lGerLogPro,lRePross,cAliK280)
- Local nX,nY
- Local lExistK27x:= Existblock("REGK27X")
- Default aProdNeg := {}
- Default cBlKCor := " "
- Default lGerLogPro := .T.
- Default lRepross := .T.
- If cVersSped <"013"
- If lExistK27x
- Execblock("REGK27X",.F.,.F.,{cAliK270,cAliK275,dDataDe,dDataAte})
- Elseif Len(aProdNeg) > 0
- If cBlKCor == "K235"
- For nX := 1 to Len(aProdNeg)
- Reclock(cAliK275,.T.)
- (cAliK275)->FILIAL := aProdNeg[nX,1]
- (cAliK275)->REG := "K275"
- (cAliK275)->COD_OP_OS := aProdNeg[nX,6]
- (cAliK275)->COD_ITEM := aProdNeg[nX,4]
- (cAliK275)->QTD_COR_N := ABS(aProdNeg[nX,5])
- (cAliK275)->COD_INS_SU := aProdNeg[nX,7]
- (cAliK275)->(MsUnLock())
- nRegsto++
- Next nX
- For nY := 1 to Len(aProdNeg)
- dDataTrat:= GetIniProd(aProdNeg[nY,6])
- If (SC2->(MsSeek(aProdNeg[nY,1]+aProdNeg[nY,6])))
- Reclock(cAliK270,.T.)
- (cAliK270)->FILIAL := aProdNeg[nY,1]
- (cAliK270)->REG := "K270"
- (cAliK270)->DT_INI_AP := Stod(Substr(DtoS(dDataTrat),1,6)+"01")
- (cAliK270)->DT_FIN_AP := Stod(Substr(DtoS(dDataTrat),1,6)+SubStr(DtoS(Lastday(dDataTrat,0)),7,8))
- (cAliK270)->COD_OP_OS := aProdNeg[nY,6]
- (cAliK270)->COD_ITEM := SC2->C2_PRODUTO
- (cAliK270)->ORIGEM := "1"
- (cAliK270)->(MsUnLock())
- nRegsto++
- EndIf
- Next nY
- EndIf
- EndIf
- Else
- // tratamento K250/K255 - Industrializacao efetuada por terceiros
- CorrK25X(cAliK270,cAliK275,dDataDe,dDataAte,lGerLogPro,cAliK280)
- // tratamento K210/K215 - Desmontagem
- CorrK21X(cAliK270,cAliK275,dDataDe,dDataAte,lGerLogPro,cAliK280)
- // tratamento K220 - Outras movimentacoes internas entre mercadorias
- CorrK220(cAliK270,cAliK275,dDataDe,dDataAte,lGerLogPro,cAliK280)
- // tratamento K260 - Reprocessamento/reparo de produto/insuumo
- // sem tratamento
- // tratamento K301 - produ玢o conjunta por terceiros
- CorrK301(cAliK270,cAliK275,dDataDe,dDataAte,lGerLogPro,cAliK280)
- // tratamento K302 - produ玢o conjunta por terceiros
- CorrK302(cAliK270,cAliK275,dDataDe,dDataAte,lGerLogPro,cAliK280)
- If lExistK27x
- Execblock("REGK27X",.F.,.F.,{cAliK270,cAliK275,dDataDe,dDataAte})
- EndIf
- // grava na tabela de historico
- //BlkGrvTab(cAliK270,"",aTmpRegK[K270][4],dDataAte,lRepross)
- //BlkGrvTab(cAliK275,"",aTmpRegK[K275][4],dDataAte,lRepross)
- EndIf
- Return
- /*/{Protheus.doc} CorrK21X
- Registros do K270 referente a corre玢o do K210/K210.
- Onde busca os movimentos internos de desmontagem estornados ou incluidos, apos a geracao do SPED FISCAL.
- @author reynaldo
- @since 25/10/2018
- @version 1.0
- @return ${return}, ${return_description}
- @param cAliK270, characters, descricao
- @param cAliK275, characters, descricao
- @param dDataDe, date, descricao
- @param dDataAte, date, descricao
- @param lGerLogPro, logical, descricao
- @param cAliK280, characters, descricao
- @type function
- /*/
- Static Function CorrK21X(cAliK270,cAliK275,dDataDe,dDataAte,lGerLogPro,cAliK280)
- Local cQuery := ""
- Local cAliasTmp := GetNextAlias()
- Local cQryRegs := ""
- Default lGerLogPro := .T.
- cQryRegs += "FROM "+RetSqlName("SD3")+" SD3 "
- cQryRegs += "LEFT JOIN "+RetSqlName("D3E")+" D3E ON "
- cQryRegs += "D3E.D3E_FILIAL = '"+xFilial('D3E')+"' "
- cQryRegs += "AND D3E_COD = SD3.D3_COD "
- cQryRegs += "AND D3E.D_E_L_E_T_ = ' ' "
- cQryRegs += "WHERE SD3.D3_FILIAL = '"+xFilial('SD3')+"' "
- cQryRegs += "AND SD3.D3_CF IN ('DE7','RE7') "
- cQryRegs += "AND SD3.D3_EMISSAO < '"+DtoS(dDataDe)+"' "
- cQryRegs += "AND SD3.D3_PERBLK IN ('"+space(TamSx3("D3_PERBLK")[1])+"', '"+Left(dTos(dDataAte),6)+"') "
- cQryRegs += "AND SD3.D_E_L_E_T_ = ' ' "
- cQryRegs += "AND EXISTS( "
- cQryRegs += "SELECT 1 FROM "+RetSqlName("SB1")+" SB1 "
- If lCpoBZTP
- cQryRegs += "LEFT JOIN "+RetSqlName("SBZ")+" SBZ ON SBZ.BZ_FILIAL = '"+xFilial('SBZ')+"' AND SBZ.BZ_COD = SB1.B1_COD AND SBZ.D_E_L_E_T_ = ' ' "
- EndIf
- cQryRegs += "WHERE SB1.B1_FILIAL = '"+xFilial('SB1')+"' "
- cQryRegs += "AND SB1.B1_COD = SD3.D3_COD "
- cQryRegs += "AND SB1.B1_COD NOT LIKE 'MOD%' "
- cQryRegs += "AND SB1.B1_CCCUSTO = ' ' "
- cQryRegs += "AND SB1.D_E_L_E_T_ = ' ' "
- cQryRegs += "AND "
- If lCpoBZTP
- cQryRegs += MatIsNull()+"(SBZ.BZ_TIPO,SB1.B1_TIPO) "
- Else
- cQryRegs += "SB1.B1_TIPO "
- EndIf
- cQryRegs += "IN ("+cTipo03+","+cTipo04+") "
- cQryRegs += ") "
- // agrupando os registros para gravacao do registro do k270/k275
- cQuery := ""
- cQuery += "SELECT SD3a.D3_FILIAL, REG, SD3a.D3_COD, MESANOAPUR, SD3a.D3_NUMSEQ, SD3a.D3_DOC, Sum(SD3a.D3_QUANT) D3_QUANT , D3E_CLIENT, D3E_LOJA "
- cQuery += "FROM ("
- cQuery += "SELECT SD3.D3_FILIAL, SD3.D3_COD, "+ MatiSubStr()+"(SD3.D3_EMISSAO,1,6) MESANOAPUR, SD3.D3_NUMSEQ, SD3.D3_DOC, Coalesce( D3E_CLIENT,'') D3E_CLIENT, Coalesce( D3E_LOJA,'') D3E_LOJA"
- cQuery += ", CASE WHEN SD3.D3_FATHER ='F' THEN 'K270' ELSE 'K275' END REG "
- cQuery += ", CASE WHEN SD3.D3_CF = 'RE7' THEN SD3.D3_QUANT*-1 ELSE SD3.D3_QUANT END D3_QUANT "
- cQuery += cQryRegs
- cQuery += +") SD3a "
- cQuery += "GROUP BY SD3a.D3_FILIAL, SD3a.D3_COD, MESANOAPUR, SD3a.D3_NUMSEQ, SD3a.D3_DOC, REG ,D3E_CLIENT, D3E_LOJA "
- cQuery += "ORDER BY 4,6 "
- cQuery := ChangeQuery(cQuery)
- dbUseArea(.T.,"TOPCONN",TcGenQry(,,cQuery),cAliasTmp,.T.,.T.)
- While !(cAliasTmp)->(Eof())
- If LEFT((cAliasTMP)->REG,4) =="K270"
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
- //?Grava o Registro K270 ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
- Reclock(cAliK270,.T.)
- (cAliK270)->FILIAL := (cAliasTMP)->D3_FILIAL
- (cAliK270)->REG := (cAliasTMP)->REG
- (cAliK270)->CHAVE := strzero((cAliK270)->(Recno()),len((cAliK270)->CHAVE))
- (cAliK270)->DT_INI_AP := STOD(LEFT((cAliasTMP)->MESANOAPUR,6)+"01")
- (cAliK270)->DT_FIN_AP := Lastday((cAliK270)->DT_INI_AP)
- (cAliK270)->COD_OP_OS := (cAliasTMP)->D3_DOC
- (cAliK270)->COD_ITEM := (cAliasTMP)->D3_COD
- If (cAliasTMP)->D3_QUANT >0
- (cAliK270)->QTD_COR_P := (cAliasTMP)->D3_QUANT
- Else
- (cAliK270)->QTD_COR_N := (cAliasTMP)->D3_QUANT*-1
- EndIf
- (cAliK270)->ORIGEM := "3"
- (cAliK270)->(MsUnLock())
- nRegsto++
- BlkReg280((cAliK270)->FILIAL,"K210",LastDay(STOD(LEFT((cAliasTMP)->MESANOAPUR,6)+"01")),dDataAte,(cAliasTmp)->D3_COD,(cAliasTMP)->D3_QUANT,(cAliasTMP)->D3E_CLIENT,(cAliasTMP)->D3E_LOJA,cAliK280)
- Else
- If LEFT((cAliasTMP)->REG,4) =="K275"
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
- //?Grava o Registro K275 ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
- Reclock(cAliK275,.T.)
- (cAliK275)->FILIAL := (cAliasTMP)->D3_FILIAL
- (cAliK275)->REG := (cAliasTMP)->REG
- (cAliK275)->CHAVE := strzero((cAliK270)->(Recno()),len((cAliK270)->CHAVE))
- (cAliK275)->COD_ITEM := (cAliasTMP)->D3_COD
- If (cAliasTMP)->D3_QUANT >0
- (cAliK275)->QTD_COR_P := (cAliasTMP)->D3_QUANT
- Else
- (cAliK275)->QTD_COR_N := (cAliasTMP)->D3_QUANT*-1
- EndIf
- (cAliK275)->COD_INS_SUBST := ""
- (cAliK275)->(MsUnLock())
- BlkReg280((cAliK275)->FILIAL,"K215",LastDay(STOD(LEFT((cAliasTMP)->MESANOAPUR,6)+"01")),dDataAte,(cAliasTmp)->D3_COD,(cAliasTMP)->D3_QUANT,(cAliasTMP)->D3E_CLIENT,(cAliasTMP)->D3E_LOJA,cAliK280)
- nRegsto++
- EndIf
- EndIf
- (cAliasTMP)->(dbSkip())
- EndDo
- (cAliasTmp)->(dbCloseArea())
- If lGerLogPro
- // atualiza o periodo de apuracao do bloco K nos registros que foram envolvidos
- cQuery := ""
- cQuery += "UPDATE "+RetSqlName("SD3")+" "
- cQuery += "SET D3_PERBLK = '"+Left(dTos(dDataAte),6)+"' "
- cQuery += "WHERE R_E_C_N_O_ IN ( "
- cQuery += "SELECT SD3.R_E_C_N_O_ "
- cQuery += cQryRegs
- cQuery += +") "
- MATExecQry(cQuery)
- EndIf
- Return
- /*/{Protheus.doc} CorrK220
- Registros do K270 referente a corre玢o do K220.
- Onde busca os movimentos internos de transferencia de produtos estornados ou incluidos, apos a geracao do SPED FISCAL.
- @author reynaldo
- @since 19/10/2018
- @version 1.0
- @return ${return}, ${return_description}
- @param cAliK270, characters, descricao
- @param cAliK275, characters, descricao
- @param dDataDe, date, descricao
- @param dDataAte, date, descricao
- @param lGerLogPro, logical, descricao
- @param cAliK280, characters, descricao
- @type function
- /*/
- Static Function CorrK220(cAliK270,cAliK275,dDataDe,dDataAte,lGerLogPro,cAliK280)
- Local cQuery := ""
- Local cAliasTmp := GetNextAlias()
- Default lGerLogPro := .T.
- cQuery := "SELECT SD3ORI.D3_FILIAL, "+ MatiSubStr()+"(SD3ORI.D3_EMISSAO,1,6) MESANOAPUR, "
- cQuery += "SD3ORI.D3_COD CODORI, SUM(SD3ORI.D3_QUANT) QTDORI, "
- cQuery += "SD3DES.D3_COD CODDES, SUM(SD3DES.D3_QUANT) QTDDES, "
- cQuery += "COALESCE(D3E.D3E_CLient,'')CLIENTE,COALESCE(D3E.D3E_lOJA,'')LOJA, Coalesce (DESTD3E.D3E_CLient,'')ClienteDes, "
- cQuery += "COALESCE(DESTD3E.D3E_lOJA,'') LOJADES "
- cQuery += "FROM "+RetSqlName("SD3")+" SD3ORI "
- cQuery += "JOIN "+RetSqlName("SD3")+" SD3DES ON SD3DES.D3_FILIAL = SD3ORI.D3_FILIAL "
- cQuery += "AND SD3DES.D3_NUMSEQ = SD3ORI.D3_NUMSEQ "
- cQuery += "AND SD3DES.D3_CF = 'DE4' "
- cQuery += "AND SD3DES.D3_PERBLK IN ('"+space(TamSx3("D3_PERBLK")[1])+"', '"+Left(dTos(dDataAte),6)+"') "
- cQuery += "AND SD3DES.D_E_L_E_T_ = ' ' "
- cQuery += "JOIN "+RetSqlName("SB1")+" SB1ORI ON SB1ORI.B1_FILIAL = '"+xFilial('SB1')+"' "
- cQuery += "AND SB1ORI.B1_COD = SD3ORI.D3_COD "
- cQuery += "AND SB1ORI.B1_CCCUSTO = ' ' "
- cQuery += "AND SB1ORI.B1_COD NOT LIKE 'MOD%' "
- cQuery += "AND SB1ORI.D_E_L_E_T_ = ' ' "
- cQuery += "LEFT JOIN "+RetSqlName("D3E")+" D3E "
- cQuery += "ON D3E.D3E_FILIAL ='"+xfilial('D3E')+"' "
- cQuery += "AND D3E.D3E_COD = SB1ORI.B1_COD "
- cQuery += "AND D3E.D_E_L_E_T_= ' ' "
- If lCpoBZTP
- cQuery += "LEFT JOIN "+RetSqlName("SBZ")+" SBZORI ON SBZORI.BZ_FILIAL = '"+xFilial('SBZ')+"' AND SBZORI.BZ_COD = SB1ORI.B1_COD AND SBZORI.D_E_L_E_T_ = ' ' "
- EndIf
- cQuery += "JOIN "+RetSqlName("SB1")+" SB1DES ON SB1DES.B1_FILIAL = '"+xFilial('SB1')+"' "
- cQuery += "AND SB1DES.B1_COD = SD3DES.D3_COD "
- cQuery += "AND SB1DES.B1_CCCUSTO = ' ' "
- cQuery += "AND SB1DES.B1_COD NOT LIKE 'MOD%' "
- cQuery += "AND SB1DES.D_E_L_E_T_ = ' ' "
- cQuery += "LEFT JOIN "+RetSQLName('D3E')+" DESTD3E ON D3E.D3E_FILIAL ='"+xFilial('D3E')+"' "
- cQuery += "AND DESTD3E.D3E_COD = SB1DES.B1_COD "
- cQuery += "AND DESTD3E.D_E_L_E_T_= ' ' "
- If lCpoBZTP
- cQuery += "LEFT JOIN "+RetSqlName("SBZ")+" SBZDES ON SBZDES.BZ_FILIAL = '"+xFilial('SBZ')+"' AND SBZDES.BZ_COD = SB1DES.B1_COD AND SBZDES.D_E_L_E_T_ = ' ' "
- EndIf
- cQuery += "WHERE SD3ORI.D3_FILIAL = '"+xFilial('SD3')+"' "
- cQuery += "AND SD3ORI.D3_COD <> SD3DES.D3_COD "
- cQuery += "AND SD3ORI.D3_CF = 'RE4' "
- cQuery += "AND SD3ORI.D3_EMISSAO < '"+DtoS(dDataDe)+"' "
- cQuery += "AND SD3ORI.D3_PERBLK IN ('"+space(TamSx3("D3_PERBLK")[1])+"', '"+Left(dTos(dDataAte),6)+"') "
- cQuery += "AND "
- If lCpoBZTP
- cQuery += MatIsNull()+"(SBZORI.BZ_TIPO,SB1ORI.B1_TIPO) "
- Else
- cQuery += "SB1ORI.B1_TIPO "
- EndIF
- cQuery += " IN ("+cTipo00+","+cTipo01+","+cTipo02+","+cTipo03+","+cTipo04+","+cTipo05+","+cTipo10+") "
- cQuery += "AND "
- If lCpoBZTP
- cQuery += MatIsNull()+"(SBZDES.BZ_TIPO,SB1DES.B1_TIPO) "
- Else
- cQuery += "SB1DES.B1_TIPO "
- EndIF
- cQuery += " IN ("+cTipo00+","+cTipo01+","+cTipo02+","+cTipo03+","+cTipo04+","+cTipo05+","+cTipo10+") "
- cQuery += "AND SD3ORI.D_E_L_E_T_ = ' ' "
- cQuery += "GROUP BY "+ MatiSubStr()+"(SD3ORI.D3_EMISSAO,1,6) , SD3ORI.D3_COD, SD3DES.D3_COD, SD3ORI.D3_FILIAL ,D3E.D3E_CLIENT,D3E.D3E_LOJA,DESTD3E.D3E_CLIENT, "
- cQuery += "DESTD3E.D3E_LOJA"
- cQuery := ChangeQuery(cQuery)
- dbUseArea(.T.,"TOPCONN",TcGenQry(,,cQuery),cAliasTmp,.T.,.T.)
- While !(cAliasTmp)->(Eof())
- Reclock(cAliK270,.T.)
- (cAliK270)->FILIAL := (cAliasTmp)->D3_FILIAL
- (cAliK270)->REG := "K270"
- (cAliK270)->CHAVE := strzero((cAliK270)->(Recno()),len((cAliK270)->CHAVE))
- (cAliK270)->DT_INI_AP := STOD(LEFT((cAliasTMP)->MESANOAPUR,6)+"01")
- (cAliK270)->DT_FIN_AP := Lastday((cAliK270)->DT_INI_AP)
- (cAliK270)->COD_OP_OS := ""
- (cAliK270)->COD_ITEM := (cAliasTmp)->CODORI
- (cAliK270)->QTD_COR_N := (cAliasTmp)->QTDORI
- (cAliK270)->ORIGEM := "5"
- (cAliK270)->(MsUnLock())
- BlkReg280((cAliK270)->FILIAL,"K220",LastDay(STOD(LEFT((cAliasTMP)->MESANOAPUR,6)+"01")),dDataAte,(cAliasTmp)->CODORI,(cAliasTMP)->QTDORI*-1,(cAliasTMP)->CLIENTE,(cAliasTMP)->LOJA,cAliK280)
- Reclock(cAliK275,.T.)
- (cAliK275)->FILIAL := (cAliasTmp)->D3_FILIAL
- (cAliK275)->REG := "K275"
- (cAliK275)->CHAVE := strzero((cAliK270)->(Recno()),len((cAliK270)->CHAVE))
- (cAliK275)->COD_ITEM := (cAliasTmp)->CODDES
- (cAliK275)->QTD_COR_P := (cAliasTmp)->QTDDES
- (cAliK275)->COD_INS_SUBST := ""
- (cAliK275)->(MsUnLock())
- BlkReg280((cAliK275)->FILIAL,"K220",LastDay(STOD(LEFT((cAliasTMP)->MESANOAPUR,6)+"01")),dDataAte,(cAliasTmp)->CODDES,(cAliasTMP)->QTDDES,(cAliasTMP)->CLIENTEDES,(cAliasTMP)->LOJADES,cAliK280)
- (cAliasTmp)->(dbSkip())
- nRegsto++
- EndDo
- (cAliasTmp)->(dbCloseArea())
- If lGerLogPro
- // atualiza o periodo de apuracao do bloco K nos registros que foram envolvidos
- cQuery := ""
- cQuery += "UPDATE "+RetSqlName("SD3")+" "
- cQuery += "SET D3_PERBLK = '"+Left(dTos(dDataAte),6)+"' "
- cQuery += "WHERE R_E_C_N_O_ IN ( "
- cQuery += "SELECT SD3ORI.R_E_C_N_O_ "
- cQuery += "FROM "+RetSqlName("SD3")+" SD3ORI "
- cQuery += "JOIN "+RetSqlName("SD3")+" SD3DES ON SD3DES.D3_FILIAL = SD3ORI.D3_FILIAL "
- cQuery += "AND SD3DES.D3_NUMSEQ = SD3ORI.D3_NUMSEQ "
- cQuery += "AND ((SD3ORI.D3_CF = 'RE4' AND SD3DES.D3_CF = 'DE4') "
- cQuery += "OR (SD3ORI.D3_CF = 'DE4' AND SD3DES.D3_CF = 'RE4')) "
- cQuery += "AND SD3DES.D3_PERBLK IN ('"+space(TamSx3("D3_PERBLK")[1])+"', '"+Left(dTos(dDataAte),6)+"') "
- cQuery += "AND SD3DES.D_E_L_E_T_ = ' ' "
- cQuery += "AND EXISTS( "
- cQuery += "SELECT 1 "
- cQuery += "FROM "+RetSqlName("SB1")+" SB1DES "
- If lCpoBZTP
- cQuery += "LEFT JOIN "+RetSqlName("SBZ")+" SBZDES ON SBZDES.BZ_FILIAL = '"+xFilial('SBZ')+"' AND SBZDES.BZ_COD = SB1DES.B1_COD AND SBZDES.D_E_L_E_T_ = ' ' "
- EndIf
- cQuery += "WHERE SB1DES.B1_FILIAL = '"+xFilial('SB1')+"' "
- cQuery += "AND SB1DES.B1_COD = SD3DES.D3_COD "
- cQuery += "AND SB1DES.B1_CCCUSTO = ' ' "
- cQuery += "AND SB1DES.B1_COD NOT LIKE 'MOD%' "
- cQuery += "AND SB1DES.D_E_L_E_T_ = ' ' "
- cQuery += "AND "
- If lCpoBZTP
- cQuery += MatIsNull()+"(SBZDES.BZ_TIPO,SB1DES.B1_TIPO) "
- Else
- cQuery += "SB1DES.B1_TIPO "
- EndIF
- cQuery += " IN ("+cTipo00+","+cTipo01+","+cTipo02+","+cTipo03+","+cTipo04+","+cTipo05+","+cTipo10+") "
- cQuery += ") "
- cQuery += "WHERE SD3ORI.D3_FILIAL = '"+xFilial('SD3')+"' "
- cQuery += "AND SD3ORI.D3_COD <> SD3DES.D3_COD "
- cQuery += "AND SD3ORI.D3_CF IN ('DE4','RE4') "
- cQuery += "AND SD3ORI.D3_EMISSAO < '"+DtoS(dDataDe)+"' "
- cQuery += "AND SD3ORI.D3_PERBLK IN ('"+space(TamSx3("D3_PERBLK")[1])+"', '"+Left(dTos(dDataAte),6)+"') "
- cQuery += "AND EXISTS( "
- cQuery += "SELECT 1 "
- cQuery += "FROM "+RetSqlName("SB1")+" SB1ORI "
- If lCpoBZTP
- cQuery += "LEFT JOIN "+RetSqlName("SBZ")+" SBZORI ON SBZ.BZ_FILIAL = '"+xFilial('SBZ')+"' AND SBZORI.BZ_COD = SB1ORI.B1_COD AND SBZORI.D_E_L_E_T_ = ' ' "
- EndIf
- cQuery += "WHERE SB1ORI.B1_FILIAL = '"+xFilial('SB1')+"' "
- cQuery += "AND SB1ORI.B1_COD = SD3ORI.D3_COD "
- cQuery += "AND SB1ORI.B1_CCCUSTO = ' ' "
- cQuery += "AND SB1ORI.B1_COD NOT LIKE 'MOD%' "
- cQuery += "AND SB1ORI.D_E_L_E_T_ = ' ' "
- cQuery += "AND "
- If lCpoBZTP
- cQuery += MatIsNull()+"(SBZORI.BZ_TIPO,SB1ORI.B1_TIPO) "
- Else
- cQuery += "SB1ORI.B1_TIPO "
- EndIf
- cQuery += " IN ("+cTipo00+","+cTipo01+","+cTipo02+","+cTipo03+","+cTipo04+","+cTipo05+","+cTipo10+") "
- cQuery += ") "
- cQuery += "AND SD3ORI.D_E_L_E_T_ = ' ' "
- cQuery += +") "
- MATExecQry(cQuery)
- EndIf
- Return
- /*/{Protheus.doc} CorrK25X
- Registros do K270 referente a corre玢o do K250/K255.
- Onde busca os movimentos internos de requisicao e produ玢o, referente a uma ordem de produ玢o
- em terceiros, estornados ou incluidos,
- apos a geracao do SPED FISCAL.
- @author reynaldo
- @since 25/10/2018
- @version 1.0
- @return ${return}, ${return_description}
- @param cAliK270, characters, descricao
- @param cAliK275, characters, descricao
- @param dDataDe, date, descricao
- @param dDataAte, date, descricao
- @param lGerLogPro, logical, descricao
- @param cAliK280, characters, descricao
- @type function
- /*/
- Static Function CorrK25X(cAliK270,cAliK275,dDataDe,dDataAte,lGerLogPro,cAliK280)
- Local cAliasTmp := GetNextAlias()
- Local cQryK25X := ""
- Local cQryK280 := ""
- Local cQryRegs := ""
- Local nTamChave := TamSX3("D3_OP")[1]
- Default lGerLogPro := .T.
- cQryRegs := ""
- cQryRegs += "FROM "+RetSqlName("SD3")+" SD3 "
- cQryRegs += "JOIN "+RetSqlName("SB1")+" SB1 ON SB1.B1_FILIAL = '"+xFilial('SB1')+"' "
- cQryRegs += "AND SB1.B1_COD = SD3.D3_COD "
- cQryRegs += "AND SB1.B1_COD NOT LIKE 'MOD%' "
- cQryRegs += "AND SB1.B1_CCCUSTO = ' ' "
- cQryRegs += "AND SB1.D_E_L_E_T_ = ' ' "
- If lCpoBZTP
- cQryRegs += "LEFT JOIN "+RetSqlName("SBZ")+" SBZ ON SBZ.BZ_FILIAL = '"+xFilial('SBZ')+"' AND SBZ.BZ_COD = SB1.B1_COD AND SBZ.D_E_L_E_T_ = ' ' "
- EndIf
- cQryRegs += "JOIN "+RetSqlName("SC2")+" SC2 ON SD3.D3_OP = SC2.C2_NUM "+ MatiConcat()+" SC2.C2_ITEM "+ MatiConcat()+" SC2.C2_SEQUEN "+ MatiConcat()+" SC2.C2_ITEMGRD "
- cQryRegs += "AND SC2.C2_FILIAL = '"+xFilial('SC2')+"' "
- cQryRegs += "AND SC2.D_E_L_E_T_ = ' ' "
- cQryRegs += "AND SC2.C2_ITEM <> 'OS' "
- cQryRegs += "AND SC2.C2_TPPR IN ('E') "
- cQryRegs += "WHERE SD3.D3_FILIAL = '"+xFilial('SD3')+"' "
- cQryRegs += "AND SD3.D3_EMISSAO < '"+DtoS(dDataDe)+"' "
- cQryRegs += "AND SD3.D3_PERBLK IN ('"+space(TamSx3("D3_PERBLK")[1])+"', '"+Left(dTos(dDataAte),6)+"') "
- cQryRegs += "AND SD3.D_E_L_E_T_ = ' ' "
- cQryRegs += "AND ((SD3.D3_CF IN ('PR0','PR1','ER0','ER1') "
- cQryRegs += "AND "
- If lCpoBZTP
- cQryRegs += MatIsNull()+"(SBZ.BZ_TIPO,SB1.B1_TIPO) "
- Else
- cQryRegs += "SB1.B1_TIPO "
- EndIf
- cQryRegs += "IN ("+cTipo03+","+cTipo04+") ) "
- cQryRegs += "OR ((SD3.D3_CF LIKE ('RE%') OR SD3.D3_CF LIKE ('DE%') ) "
- cQryRegs += "AND "
- If lCpoBZTP
- cQryRegs += MatIsNull()+"(SBZ.BZ_TIPO,SB1.B1_TIPO) "
- Else
- cQryRegs += "SB1.B1_TIPO "
- EndIf
- cQryRegs += " IN ("+cTipo00+","+cTipo01+","+cTipo02+","+cTipo03+","+cTipo04+","+cTipo05+","+cTipo10+") "
- cQryRegs += ") )"
- cQryRegs += "AND NOT EXISTS( "
- cQryRegs += "SELECT 1 FROM "+RetSqlName("SD4")+" SD4 "
- cQryRegs += "WHERE SD4.D4_FILIAL = '"+xFilial("SD4")+"' "
- cQryRegs += "AND SD4.D4_OP = SD3.D3_OP "
- cQryRegs += "AND SD4.D4_PRODUTO = SC2.C2_PRODUTO "
- cQryRegs += "AND SD4.D4_QTDEORI < 0 "
- cQryRegs += "AND SD4.D_E_L_E_T_ = ' ' "
- cQryRegs += ") "
- //
- // Selecao dos movimentos internos (requisicoes/producao) executados apos a apuracao do bloco k
- //
- cQryK280 := ""
- cQryK280 += "SELECT (CASE WHEN SD3.D3_CF = 'PR1' THEN 'K270' "
- cQryK280 += "WHEN SD3.D3_CF = 'PR0' THEN 'K270' "
- cQryK280 += "WHEN SD3.D3_CF = 'ER0' THEN 'K270' "
- cQryK280 += "WHEN SD3.D3_CF = 'ER1' THEN 'K270' "
- cQryK280 += "ELSE 'K275' END "
- cQryK280 += ")REG, SD3.D3_FILIAL, SD3.D3_OP, SD3.D3_COD, "+ MatiSubStr()+"(SD3.D3_EMISSAO,1,6) MESANOAPUR, D3_FORNDOC, D3_LOJADOC, "
- cQryK280 += "(CASE WHEN SD3.D3_CF LIKE 'PR%' THEN SD3.D3_QUANT "
- cQryK280 += "WHEN SD3.D3_CF LIKE 'DE%' THEN SD3.D3_QUANT "
- cQryK280 += "ELSE SD3.D3_QUANT*-1 END) D3_QUANT "
- cQryK280 += cQryRegs + " "
- //
- // Agrupamento dos movimentos internos (requisicoes/producao) executados apos a apuracao do bloco k para correcao do K250
- //
- cQryK25X := ""
- cQryK25X += "SELECT D3_FILIAL, REG, D3_OP, D3_COD, MESANOAPUR, SUM(D3_QUANT) D3_QUANT "
- cQryK25X += "FROM ("
- cQryK25X += cQryK280 + ") SD3MOV "
- cQryK25X += "GROUP BY D3_FILIAL, REG, D3_OP, D3_COD, MESANOAPUR "
- cQryK25X += "ORDER BY 4,2 "
- cQuery := ChangeQuery(cQryK25X)
- dbUseArea(.T.,"TOPCONN",TcGenQry(,,cQuery),cAliasTmp,.T.,.T.)
- While !(cAliasTmp)->(Eof())
- If Left((cAliasTMP)->REG,4) == 'K270'
- Reclock(cAliK270,.T.)
- (cAliK270)->FILIAL := (cAliasTmp)->D3_FILIAL
- (cAliK270)->REG := "K270"
- (cAliK270)->CHAVE := strzero((cAliK270)->(Recno()),nTamChave)
- (cAliK270)->DT_INI_AP := STOD(LEFT((cAliasTMP)->MESANOAPUR,6)+"01")
- (cAliK270)->DT_FIN_AP := Lastday((cAliK270)->DT_INI_AP)
- (cAliK270)->COD_OP_OS := (cAliasTmp)->D3_OP
- (cAliK270)->COD_ITEM := (cAliasTmp)->D3_COD
- If (cAliasTmp)->D3_QUANT >0
- (cAliK270)->QTD_COR_P := (cAliasTmp)->D3_QUANT
- Else
- (cAliK270)->QTD_COR_N := (cAliasTmp)->D3_QUANT*-1
- EndIf
- (cAliK270)->ORIGEM := "2"
- (cAliK270)->(MsUnLock())
- Else
- If Left((cAliasTMP)->REG,4) == 'K275'
- Reclock(cAliK275,.T.)
- (cAliK275)->FILIAL := (cAliasTmp)->D3_FILIAL
- (cAliK275)->REG := "K275"
- (cAliK275)->CHAVE := strzero((cAliK270)->(Recno()),nTamChave)
- (cAliK275)->COD_ITEM := (cAliasTmp)->D3_COD
- If (cAliasTmp)->D3_QUANT >0
- (cAliK275)->QTD_COR_N := (cAliasTmp)->D3_QUANT
- Else
- (cAliK275)->QTD_COR_P := (cAliasTmp)->D3_QUANT*-1
- EndIf
- (cAliK275)->COD_INS_SUBST := ""
- (cAliK275)->(MsUnLock())
- EndIf
- EndIf
- (cAliasTmp)->(dbSkip())
- nRegsto++
- EndDo
- (cAliasTmp)->(dbCloseArea())
- If lGerLogPro
- // atualiza o periodo de apuracao do bloco K nos registros que foram envolvidos
- cQuery := ""
- cQuery += "UPDATE "+RetSqlName("SD3")+" "
- cQuery += "SET D3_PERBLK = '"+Left(dTos(dDataAte),6)+"' "
- cQuery += "WHERE R_E_C_N_O_ IN ( "
- cQuery += "SELECT SD3.R_E_C_N_O_ "
- cQuery += cQryRegs
- cQuery += +") "
- MATExecQry(cQuery)
- EndIf
- //
- // tratamento para geracao dos registros do K280
- //
- cQuery := ChangeQuery(cQryK280)
- dbUseArea(.T.,"TOPCONN",TcGenQry(,,cQuery),cAliasTmp,.T.,.T.)
- While !(cAliasTmp)->(Eof())
- BlkReg280((cAliasTmp)->D3_FILIAL,"K250",LastDay(STOD(LEFT((cAliasTMP)->MESANOAPUR,6)+"01")),dDataAte,(cAliasTmp)->D3_COD,(cAliasTMP)->D3_QUANT,(cAliasTMP)->D3_FORNDOC,(cAliasTMP)->D3_LOJADOC,cAliK280)
- (cAliasTmp)->(dbSkip())
- EndDo
- (cAliasTmp)->(dbCloseArea())
- Return
- /*{Protheus.doc} CorrK301
- Registros do K270 referente a corre玢o do K301.
- Onde busca os movimentos de produ玢o, referente a uma ordem de produ玢o com
- estrutura negativa em terceiros, estornados ou incluidos, apos a geracao
- do SPED FISCAL.
- @author reynaldo
- @since 25/10/2018
- @version 1.0
- @return ${return}, ${return_description}
- @param cAliK270, characters, descricao
- @param cAliK275, characters, descricao
- @param dDataDe, date, descricao
- @param dDataAte, date, descricao
- @param lGerLogPro, logical, descricao
- @param cAliK280, characters, descricao
- @type function
- /*/
- Static Function CorrK301(cAliK270,cAliK275,dDataDe,dDataAte,lGerLogPro,cAliK280)
- Local cAliasTmp := GetNextAlias()
- Local cQryK301 := ""
- Local cQryK280 := ""
- Local cQuery := ""
- Local cQryRegs := ""
- Local nTamChave := TamSX3("D3_OP")[1]
- Default lGerLogPro := .T.
- cQryRegs := ""
- cQryRegs += "FROM "+RetSqlName("SD3")+" SD3 "
- cQryRegs += "JOIN "+RetSqlName("SC2")+" SC2 ON SD3.D3_OP = SC2.C2_NUM" + MatiConcat()+"SC2.C2_ITEM" + MatiConcat()+"SC2.C2_SEQUEN" + MatiConcat()+"SC2.C2_ITEMGRD "
- cQryRegs += "AND SC2.C2_FILIAL = '"+xFilial('SC2')+"' "
- cQryRegs += "AND SC2.C2_ITEM <> 'OS' "
- cQryRegs += "AND SC2.C2_TPPR = 'E' "
- cQryRegs += "AND SC2.D_E_L_E_T_ = ' ' "
- cQryRegs += "WHERE SD3.D3_FILIAL = '"+xFilial('SD3')+"' "
- cQryRegs += "AND SD3.D3_CF IN ('PR0','PR1','ER0','ER1','DE1','RE1') "
- cQryRegs += "AND SD3.D3_EMISSAO < '"+DtoS(dDataDe)+"' "
- cQryRegs += "AND SD3.D3_PERBLK IN ('"+space(TamSx3("D3_PERBLK")[1])+"', '"+Left(dTos(dDataAte),6)+"') "
- cQryRegs += "AND SD3.D_E_L_E_T_ = ' ' "
- cQryRegs += "AND EXISTS( "
- cQryRegs += "SELECT 1 FROM "+RetSqlName("SB1")+" SB1 "
- If lCpoBZTP
- cQryRegs += "LEFT JOIN "+RetSqlName("SBZ")+" SBZ ON SBZ.BZ_FILIAL = '"+xFilial('SBZ')+"' AND SBZ.BZ_COD = SB1.B1_COD AND SBZ.D_E_L_E_T_ = ' ' "
- EndIf
- cQryRegs += "WHERE SB1.B1_FILIAL = '"+xFilial('SB1')+"' "
- cQryRegs += "AND SB1.B1_COD = SD3.D3_COD "
- cQryRegs += "AND SB1.B1_COD NOT LIKE 'MOD%' "
- cQryRegs += "AND SB1.B1_CCCUSTO = ' ' "
- cQryRegs += "AND SB1.D_E_L_E_T_ = ' ' "
- cQryRegs += "AND "
- If lCpoBZTP
- cQryRegs += MatIsNull()+"(SBZ.BZ_TIPO,SB1.B1_TIPO) "
- Else
- cQryRegs += "SB1.B1_TIPO "
- EndIf
- cQryRegs += "IN ("+cTipo03+","+cTipo04+") "
- cQryRegs += ") "
- cQryRegs += "AND EXISTS( "
- cQryRegs += "SELECT 1 FROM "+RetSqlName("SD4")+" SD4 "
- cQryRegs += "WHERE SD4.D4_FILIAL = '"+xFilial("SD4")+"' "
- cQryRegs += "AND SD4.D4_OP = SD3.D3_OP "
- cQryRegs += "AND SD4.D4_PRODUTO = SC2.C2_PRODUTO "
- cQryRegs += "AND SD4.D4_QTDEORI < 0 "
- cQryRegs += "AND SD4.D_E_L_E_T_ = ' ' "
- cQryRegs += ") "
- //
- // Selecao dos movimentos internos (producao) executados apos a apuracao do bloco k
- //
- cQryK280 := ""
- cQryK280 += "SELECT SD3.D3_FILIAL, SD3.D3_OP, SD3.D3_COD, "+ MatiSubStr()+"(SD3.D3_EMISSAO,1,6) MESANOAPUR, D3_FORNDOC, D3_LOJADOC "
- cQryK280 += ",CASE WHEN SD3.D3_CF = 'PR0' THEN SD3.D3_QUANT "
- cQryK280 += "WHEN SD3.D3_CF = 'PR1' THEN SD3.D3_QUANT "
- cQryK280 += "WHEN SD3.D3_CF = 'DE1' THEN SD3.D3_QUANT "
- cQryK280 += "ELSE SD3.D3_QUANT*-1 END D3_QUANT "
- cQryK280 += cQryRegs
- //
- // Agrupamento dos movimentos internos (requisicoes/producao) executados apos a apuracao do bloco k para correcao do K301
- //
- cQryK301 := ""
- cQryK301 += "SELECT D3_FILIAL, D3_OP, D3_COD, MESANOAPUR, SUM(D3_QUANT) D3_QUANT "
- cQryK301 += "FROM ("
- cQryK301 += cQryK280
- cQryK301 += ") SD3MOV "
- cQryK301 += "GROUP BY D3_FILIAL, D3_OP, D3_COD, MESANOAPUR "
- cQryK301 += "ORDER BY 4,2 "
- cQuery := ChangeQuery(cQryK301)
- dbUseArea(.T.,"TOPCONN",TcGenQry(,,cQuery),cAliasTmp,.T.,.T.)
- While !(cAliasTmp)->(Eof())
- Reclock(cAliK270,.T.)
- (cAliK270)->FILIAL := (cAliasTmp)->D3_FILIAL
- (cAliK270)->REG := "K270"
- (cAliK270)->CHAVE := strzero((cAliK270)->(Recno()),nTamChave)
- (cAliK270)->DT_INI_AP := STOD(LEFT((cAliasTMP)->MESANOAPUR,6)+"01")
- (cAliK270)->DT_FIN_AP := Lastday((cAliK270)->DT_INI_AP)
- (cAliK270)->COD_OP_OS := (cAliasTmp)->D3_OP
- (cAliK270)->COD_ITEM := (cAliasTmp)->D3_COD
- If (cAliasTmp)->D3_QUANT >0
- (cAliK270)->QTD_COR_P := (cAliasTmp)->D3_QUANT
- Else
- (cAliK270)->QTD_COR_N := (cAliasTmp)->D3_QUANT*-1
- EndIf
- (cAliK270)->ORIGEM := "8"
- (cAliK270)->(MsUnLock())
- (cAliasTmp)->(dbSkip())
- nRegsto++
- EndDo
- (cAliasTmp)->(dbCloseArea())
- If lGerLogPro
- // atualiza o periodo de apuracao do bloco K nos registros que foram envolvidos
- cQuery := ""
- cQuery += "UPDATE "+RetSqlName("SD3")+" "
- cQuery += "SET D3_PERBLK = '"+Left(dTos(dDataAte),6)+"' "
- cQuery += "WHERE R_E_C_N_O_ IN ( "
- cQuery += "SELECT SD3.R_E_C_N_O_ "
- cQuery += cQryRegs
- cQuery += +") "
- MATExecQry(cQuery)
- EndIf
- //
- // tratamento para geracao dos registros do K280
- //
- cQuery := ChangeQuery(cQryK280)
- dbUseArea(.T.,"TOPCONN",TcGenQry(,,cQuery),cAliasTmp,.T.,.T.)
- While !(cAliasTmp)->(Eof())
- BlkReg280((cAliasTmp)->D3_FILIAL,"K301",LastDay(STOD(LEFT((cAliasTMP)->MESANOAPUR,6)+"01")),dDataAte,(cAliasTmp)->D3_COD,(cAliasTMP)->D3_QUANT,(cAliasTMP)->D3_FORNDOC,(cAliasTMP)->D3_LOJADOC,cAliK280)
- (cAliasTmp)->(dbSkip())
- EndDo
- (cAliasTmp)->(dbCloseArea())
- Return
- /*/{Protheus.doc} CorrK302
- Registros do K270 referente a corre玢o do K302.
- Onde busca os movimentos de requsicao, referente a uma ordem de produ玢o com
- estrutura negativa em terceiros, estornados ou incluidos, apos a geracao
- do SPED FISCAL.
- @author reynaldo
- @since 25/10/2018
- @version 1.0
- @return ${return}, ${return_description}
- @param cAliK270, characters, descricao
- @param cAliK275, characters, descricao
- @param dDataDe, date, descricao
- @param dDataAte, date, descricao
- @param lGerLogPro, logical, descricao
- @param cAliK280, characters, descricao
- @type function
- /*/
- Static Function CorrK302(cAliK270,cAliK275,dDataDe,dDataAte,lGerLogPro,cAliK280)
- Local cAliasTmp := GetNextAlias()
- Local cQryK302 := ""
- Local cQryK280 := ""
- Local cQuery := ""
- Local cQryRegs := ""
- Local nTamChave := TamSX3("D3_OP")[1]
- Default lGerLogPro := .T.
- cQryRegs := ""
- cQryRegs += "FROM "+RetSqlName("SD3")+" SD3 "
- cQryRegs += "JOIN "+RetSqlName("SC2")+" SC2 ON SD3.D3_OP = SC2.C2_NUM" + MatiConcat()+"SC2.C2_ITEM" + MatiConcat()+"SC2.C2_SEQUEN" + MatiConcat()+"SC2.C2_ITEMGRD "
- cQryRegs += "AND SC2.C2_FILIAL = '"+xFilial('SC2')+"' "
- cQryRegs += "AND SC2.C2_ITEM <> 'OS' "
- cQryRegs += "AND SC2.C2_TPPR = 'E' "
- cQryRegs += "AND SC2.D_E_L_E_T_ = ' ' "
- cQryRegs += "WHERE SD3.D3_FILIAL = '"+xFilial('SD3')+"' "
- cQryRegs += "AND (SD3.D3_CF NOT LIKE 'PR%' AND SD3.D3_CF NOT LIKE 'ER%' ) "
- cQryRegs += "AND SD3.D3_EMISSAO < '"+DtoS(dDataDe)+"' "
- cQryRegs += "AND SD3.D3_PERBLK IN ('"+space(TamSx3("D3_PERBLK")[1])+"', '"+Left(dTos(dDataAte),6)+"') "
- cQryRegs += "AND SD3.D_E_L_E_T_ = ' ' "
- cQryRegs += "AND EXISTS( "
- cQryRegs += "SELECT 1 FROM "+RetSqlName("SB1")+" SB1 "
- If lCpoBZTP
- cQryRegs += "LEFT JOIN "+RetSqlName("SBZ")+" SBZ ON SBZ.BZ_FILIAL = '"+xFilial('SBZ')+"' AND SBZ.BZ_COD = SB1.B1_COD AND SBZ.D_E_L_E_T_ = ' ' "
- EndIf
- cQryRegs += "WHERE SB1.B1_FILIAL = '"+xFilial('SB1')+"' "
- cQryRegs += "AND SB1.B1_COD = SD3.D3_COD "
- cQryRegs += "AND SB1.B1_COD NOT LIKE 'MOD%' "
- cQryRegs += "AND SB1.B1_CCCUSTO = ' ' "
- cQryRegs += "AND SB1.D_E_L_E_T_ = ' ' "
- cQryRegs += "AND "
- If lCpoBZTP
- cQryRegs += MatIsNull()+"(SBZ.BZ_TIPO,SB1.B1_TIPO) "
- Else
- cQryRegs += "SB1.B1_TIPO "
- EndIf
- cQryRegs += "IN ("+cTipo00+","+cTipo01+","+cTipo02+","+cTipo03+","+cTipo04+","+cTipo05+","+cTipo10+") "
- cQryRegs += ") "
- cQryRegs += "AND EXISTS( "
- cQryRegs += "SELECT 1 FROM "+RetSqlName("SD4")+" SD4 "
- cQryRegs += "WHERE SD4.D4_FILIAL = '"+xFilial("SD4")+"' "
- cQryRegs += "AND SD4.D4_OP = SD3.D3_OP "
- cQryRegs += "AND SD4.D4_PRODUTO = SC2.C2_PRODUTO "
- cQryRegs += "AND SD4.D4_QTDEORI < 0 "
- cQryRegs += "AND SD4.D_E_L_E_T_ = ' ' "
- cQryRegs += ") "
- cQryRegs += "AND EXISTS( "
- cQryRegs += "SELECT 1 FROM "+RetSqlName("SD4")+" SD4 "
- cQryRegs += "WHERE SD4.D4_FILIAL = '"+xFilial("SD4")+"' "
- cQryRegs += "AND SD4.D4_OP = SD3.D3_OP "
- cQryRegs += "AND SD4.D4_PRODUTO = SC2.C2_PRODUTO "
- cQryRegs += "AND SD4.D4_COD = SD3.D3_COD "
- cQryRegs += "AND SD4.D4_QTDEORI > 0 "
- cQryRegs += "AND SD4.D_E_L_E_T_ = ' ' "
- cQryRegs += ") "
- cQryK280 := ""
- cQryK280 += "SELECT SD3.D3_FILIAL, SD3.D3_OP, SD3.D3_COD, "+ MatiSubStr()+"(SD3.D3_EMISSAO,1,6) MESANOAPUR, D3_FORNDOC, D3_LOJADOC "
- cQryK280 += ",CASE WHEN SD3.D3_CF = 'PR0' THEN SD3.D3_QUANT "
- cQryK280 += "WHEN SD3.D3_CF = 'PR1' THEN SD3.D3_QUANT "
- cQryK280 += "WHEN SD3.D3_CF = 'DE1' THEN SD3.D3_QUANT "
- cQryK280 += "WHEN SD3.D3_CF = 'DE5' THEN SD3.D3_QUANT "
- cQryK280 += "ELSE SD3.D3_QUANT*-1 END D3_QUANT "
- cQryK280 += cQryRegs
- cQryK302 := ""
- cQryK302 += "SELECT D3_FILIAL, D3_OP, D3_COD, MESANOAPUR, SUM(D3_QUANT) D3_QUANT "
- cQryK302 += "FROM ("
- cQryK302 += cQryK280
- cQryK302 += ") SD3MOV "
- cQryK302 += "GROUP BY D3_FILIAL, D3_OP, D3_COD, MESANOAPUR "
- cQryK302 += "ORDER BY 4,2 "
- cQuery := ChangeQuery(cQryK302)
- dbUseArea(.T.,"TOPCONN",TcGenQry(,,cQuery),cAliasTmp,.T.,.T.)
- While !(cAliasTmp)->(Eof())
- Reclock(cAliK270,.T.)
- (cAliK270)->FILIAL := (cAliasTmp)->D3_FILIAL
- (cAliK270)->REG := "K270"
- (cAliK270)->CHAVE := strzero((cAliK270)->(Recno()),nTamChave)
- (cAliK270)->DT_INI_AP := STOD(LEFT((cAliasTMP)->MESANOAPUR,6)+"01")
- (cAliK270)->DT_FIN_AP := Lastday((cAliK270)->DT_INI_AP)
- (cAliK270)->COD_OP_OS := (cAliasTmp)->D3_OP
- (cAliK270)->COD_ITEM := (cAliasTmp)->D3_COD
- If (cAliasTmp)->D3_QUANT >0
- (cAliK270)->QTD_COR_P := (cAliasTmp)->D3_QUANT
- Else
- (cAliK270)->QTD_COR_N := (cAliasTmp)->D3_QUANT*-1
- EndIf
- (cAliK270)->ORIGEM := "9"
- (cAliK270)->(MsUnLock())
- (cAliasTmp)->(dbSkip())
- nRegsto++
- EndDo
- (cAliasTmp)->(dbCloseArea())
- If lGerLogPro
- // atualiza o periodo de apuracao do bloco K nos registros que foram envolvidos
- cQuery := ""
- cQuery += "UPDATE "+RetSqlName("SD3")+" "
- cQuery += "SET D3_PERBLK = '"+Left(dTos(dDataAte),6)+"' "
- cQuery += "WHERE R_E_C_N_O_ IN ( "
- cQuery += "SELECT SD3.R_E_C_N_O_ "
- cQuery += cQryRegs
- cQuery += +") "
- MATExecQry(cQuery)
- EndIf
- //
- // tratamento para geracao dos registros do K280
- //
- cQuery := ChangeQuery(cQryK280)
- dbUseArea(.T.,"TOPCONN",TcGenQry(,,cQuery),cAliasTmp,.T.,.T.)
- While !(cAliasTmp)->(Eof())
- BlkReg280((cAliasTmp)->D3_FILIAL,"K302",LastDay(STOD(LEFT((cAliasTMP)->MESANOAPUR,6)+"01")),dDataAte,(cAliasTmp)->D3_COD,(cAliasTMP)->D3_QUANT,(cAliasTMP)->D3_FORNDOC,(cAliasTMP)->D3_LOJADOC,cAliK280)
- (cAliasTmp)->(dbSkip())
- EndDo
- (cAliasTmp)->(dbCloseArea())
- Return
- /*苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
- 北谀哪哪哪哪穆哪哪哪哪哪哪哪哪履哪哪哪履哪哪哪哪哪哪哪哪穆哪哪哪履哪哪哪哪目北
- 北矲un嘺o ?REGK280 ?Autor ?Materiais ?Data ?11/08/16 潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪哪哪聊哪哪哪聊哪哪哪哪哪哪哪哪牧哪哪哪聊哪哪哪哪拇北
- 北矰escricao ?Funcao responsavel pela gravacao do Registro K280 潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪拇北
- 北砅arametros?cAliK280 = Alias do arquivo de trabalho do K280 潮?
- 北? ?dDataDe = Data Inicial da Apuracao 潮?
- 北? ?dDataAte = Data Final da Apuracao 潮?
- 北滥哪哪哪哪牧哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁北
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
- 哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌*/
- Function REGK280(cAliK280,dDataDe,dDataAte,lGerLogPro,lRePross)
- Local cQuery := " "
- Local cAliasTmp := " "
- DEFAULT lGerLogPro := .T.
- DEFAULT lRepross := .T.
- If cVersSped >= "013"
- cAliasTmp:= GetNextAlias()
- cquery := "SELECT SD3.D3_FILIAL,SD3.D3_COD,"
- cquery += "MAX(SD3.D3_EMISSAO)EMISSAO, "
- cquery += "SUM(CASE "
- cquery += "WHEN SD3.D3_CF LIKE ( 'RE%' ) THEN ( SD3.D3_QUANT *-1 ) "
- cquery += "ELSE SD3.D3_QUANT "
- cquery += "END ) QUANT "
- cquery +="FROM "+RetSQLName("SD3")+" SD3 "
- cquery +="JOIN "+RetSQLName("SB1")+" SB1 ON "
- cquery +=" SB1.B1_FILIAL ='"+xFilial("SB1")+"' "
- cquery +=" AND SB1.B1_COD = SD3.D3_COD "
- If lCpoBZTP
- cQuery += "LEFT JOIN "+RetSqlName("SBZ")+" SBZ ON SBZ.BZ_FILIAL = '"+xFilial('SBZ')+"' AND SBZ.BZ_COD = SB1.B1_COD AND SBZ.D_E_L_E_T_ = ' ' "
- EndIf
- If lCpoBZTP
- cQuery += " AND " + MatIsNull()+"(SBZ.BZ_TIPO,SB1.B1_TIPO) "
- Else
- cQuery += " AND SB1.B1_TIPO "
- EndIF
- cQuery += " IN ("+cTipo00+","+cTipo01+","+cTipo02+","+cTipo03+","+cTipo04+","+cTipo05+","+cTipo06+","+cTipo10+") "
- cQuery += " AND SB1.B1_FANTASM <> 'S' "
- cquery +=" AND SB1.B1_COD NOT LIKE 'MOD%' "
- cquery +=" AND SB1.D_E_L_E_T_ = ' ' "
- cquery +="WHERE SD3.D3_DOC = 'INVENT' "
- cquery += "AND SD3.D3_FILIAL= '"+xFilial("SD3")+"' "
- cquery += "AND SD3.D3_ESTORNO = ' ' "
- cquery += "AND SD3.D_E_L_E_T_ = ' ' "
- cquery += "AND SD3.D3_TM IN( '499','999') "
- cQuery += "AND SD3.D3_EMISSAO BETWEEN '" + DtoS(dDataDe) + "' AND '" + DtoS(dDataAte) + "' "
- cQuery += "AND ( NOT EXISTS(SELECT 1 "
- cQuery += "FROM "+RetSqlName("D3E")+" D3E "
- cQuery += "WHERE D3E.D3E_FILIAL = '"+xFilial("D3E")+"' "
- cQuery += "AND D3E.D3E_COD = SD3.D3_COD "
- cQuery += "AND D3E.D_E_L_E_T_ = ' ') ) "
- cquery +="GROUP BY D3_FILIAL,D3_COD "
- cQuery := ChangeQuery(cQuery)
- dbUseArea(.T.,"TOPCONN",TcGenQry(,,cQuery),cAliasTmp,.T.,.T.)
- While !(cAliasTmp)->(Eof())
- If (cAliK280)->(MSSeek((cAliasTmp)->(D3_FILIAL+EMISSAO+D3_COD+"0"+" ")))
- Reclock(cAliK280,.F.)
- If (cAliK280)->D3_QUANT >0
- (cAliK280)->QTD_COR_P += (cAliasTmp)->QUANT
- Else
- (cAliK280)->QTD_COR_N += ((cAliasTmp)->QUANT * -1)
- EndIf
- else
- Reclock(cAliK280,.T.)
- (cAliK280)->FILIAL := (cAliasTmp)->D3_FILIAL
- (cAliK280)->REG := "K280"
- (cAliK280)->DT_EST := LastDate(MonthSub(STOD((cAliasTmp)->EMISSAO),1))
- (cAliK280)->COD_ITEM := (cAliasTmp)->D3_COD
- If (cAliasTmp)->QUANT >0
- (cAliK280)->QTD_COR_P := (cAliasTmp)->QUANT
- Else
- (cAliK280)->QTD_COR_N := ((cAliasTmp)->QUANT * -1)
- EndIf
- (cAliK280)->IND_EST :="0"
- (cAliK280)->COD_PART :=" "
- EndIf
- (cAliK280)->(MsUnLock())
- nRegsto++
- (cAliasTmp)->(DbSkip())
- End
- EndIf
- If Existblock("REGK280")
- Execblock("REGK280",.F.,.F.,{cAliK280,dDataDe,dDataAte})
- EndIf
- Return
- /*苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
- 北谀哪哪哪哪穆哪哪哪哪哪哪哪哪履哪哪哪履哪哪哪哪哪哪哪哪穆哪哪哪履哪哪哪哪目北
- 北矲un嘺o ?SumK250 ?Autor ?Materiais ?Data ?23/12/15 潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪哪哪聊哪哪哪聊哪哪哪哪哪哪哪哪牧哪哪哪聊哪哪哪哪拇北
- 北矰escricao ?Funcao responsavel pela gravacao do Registro K255 潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪拇北
- 北砅arametros?cAliK250 = Alias do arquivo de trabalho do K250 潮?
- 北? ?cAliK255 = Alias do arquivo de trabalho do K255 潮?
- 北滥哪哪哪哪牧哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁北
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
- 哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌*/
- Static Function SumK250(cAliK250,cAliK255)
- Local aK250 := {}
- Local aDocs := {}
- Local cChave := "000000"
- Local cSeek := ""
- Local nFound := 0
- Local nX
- DbSelectArea(cAliK250)
- DbSetOrder(2) // FILIAL+DT_PROD+COD_ITEM
- dbGoTop()
- While !(cAliK250)->(Eof())
- cSeek := (cAliK250)->(FILIAL+DtoS(DT_PROD)+COD_ITEM)
- While (cAliK250)->(FILIAL+DtoS(DT_PROD)+COD_ITEM) == cSeek
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Aglutina os registros ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- nFound := 0
- nFound := AScan(aK250,{|x| x[1] == (cAliK250)->FILIAL .And. x[3] ==(cAliK250)->DT_PROD .And. x[4] == (cAliK250)->COD_ITEM})
- If nFound == 0
- cChave := Soma1(cChave)
- Aadd(aK250,{(cAliK250)->FILIAL,cChave,(cAliK250)->DT_PROD,(cAliK250)->COD_ITEM,(cAliK250)->QTD})
- Else
- aK250[nFound,5] += (cAliK250)->QTD
- EndIf
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Guarda os documentos ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- nFound := 0
- nFound := AScan(aDocs,{|x| x[1] == (cAliK250)->CHAVE})
- If nFound == 0
- Aadd(aDocs,{(cAliK250)->CHAVE,cChave,(cAliK250)->COD_ITEM})
- EndIf
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Apaga o Registro ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- Reclock(cAliK250,.F.)
- dbDelete()
- nRegsto--
- (cAliK250)->(MsUnlock())
- (cAliK250)->(dbSkip())
- EndDo
- EndDo
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Grava K250 aglutinado ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- For nX := 1 to Len(aK250)
- Reclock(cAliK250,.T.)
- (cAliK250)->FILIAL := aK250[nX,1]
- (cAliK250)->REG := "K250"
- (cAliK250)->CHAVE := aK250[nX,2]
- (cAliK250)->DT_PROD := aK250[nX,3]
- (cAliK250)->COD_ITEM := aK250[nX,4]
- (cAliK250)->QTD := aK250[nX,5]
- (cAliK250)->(MsUnLock())
- nRegsto++
- Next nX
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Aglutina K255 ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- SumK255(aDocs,cAliK255)
- (cAliK250)->(DbSetOrder(1))
- (cAliK255)->(DbSetOrder(1))
- Return
- /*苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
- 北谀哪哪哪哪穆哪哪哪哪哪哪哪哪履哪哪哪履哪哪哪哪哪哪哪哪穆哪哪哪履哪哪哪哪目北
- 北矲un嘺o ?SumK255 ?Autor ?Materiais ?Data ?23/12/15 潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪哪哪聊哪哪哪聊哪哪哪哪哪哪哪哪牧哪哪哪聊哪哪哪哪拇北
- 北矰escricao ?Funcao responsavel pela gravacao do Registro K255 潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪拇北
- 北砅arametros?aDocs = Array com conversao da chave gerada 潮?
- 北? ?cAliK255 = Alias do arquivo de trabalho do K255 潮?
- 北滥哪哪哪哪牧哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁北
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
- 哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌*/
- Static Function SumK255(aDocs,cAliK255)
- Local aK255 := {}
- Local cSeek := ""
- Local cChave := ""
- Local nFound := 0
- Local nX
- Local cPrdK250PA:= ""
- DbSelectArea(cAliK255)
- DbSetOrder(2) // FILIAL+DT_CONS+COD_ITEM
- dbGoTop()
- While !(cAliK255)->(Eof())
- cSeek := (cAliK255)->(FILIAL+DtoS(DT_CONS)+COD_ITEM)
- While (cAliK255)->(FILIAL+DtoS(DT_CONS)+COD_ITEM) == cSeek
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Converte a chave ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- nFound := 0
- nFound := AScan(aDocs, {|x| x[1] == (cAliK255)->CHAVE})
- cChave := aDocs[nFound,2]
- cPrdK250PA:= aDocs[nFound,3]
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Aglutina os registros ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- nFound := 0
- nFound := AScan(aK255,{|x| x[1] == (cAliK255)->FILIAL .And. x[3] ==(cAliK255)->DT_CONS .And. x[4] == COD_ITEM .And. x[6] == cPrdK250PA})
- If nFound == 0
- Aadd(aK255,{(cAliK255)->FILIAL,cChave,(cAliK255)->DT_CONS,(cAliK255)->COD_ITEM,(cAliK255)->QTD,cPrdK250PA})
- Else
- aK255[nFound,5] += (cAliK255)->QTD
- EndIf
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Apaga o Registro ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- Reclock(cAliK255,.F.)
- dbDelete()
- nRegsto--
- (cAliK255)->(MsUnlock())
- (cAliK255)->(dbSkip())
- EndDo
- EndDo
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Grava K250 aglutinado ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- For nX := 1 to Len(aK255)
- Reclock(cAliK255,.T.)
- (cAliK255)->FILIAL := aK255[nX,1]
- (cAliK255)->REG := "K255"
- (cAliK255)->CHAVE := aK255[nX,2]
- (cAliK255)->DT_CONS := aK255[nX,3]
- (cAliK255)->COD_ITEM := aK255[nX,4]
- (cAliK255)->QTD := aK255[nX,5]
- (cAliK255)->(MsUnLock())
- nRegsto++
- Next nX
- Return
- /*苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
- 北谀哪哪哪哪穆哪哪哪哪哪哪哪哪履哪哪哪履哪哪哪哪哪哪哪哪穆哪哪哪履哪哪哪哪目北
- 北矲un嘺o ?REGK990 ?Autor ?Materiais ?Data ?28/07/14 潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪哪哪聊哪哪哪聊哪哪哪哪哪哪哪哪牧哪哪哪聊哪哪哪哪拇北
- 北矰escricao ?Funcao responsavel pela gravacao do Registro K990 潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪拇北
- 北砅arametros?cAliasTRB = Alias do arquivo de trabalho do Bloco 潮?
- 北滥哪哪哪哪牧哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁北
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
- 哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌*/
- Static Function REGK990(cAliK990,dDataAte,lRePross)
- DEFAULT lRepross := .T.
- Reclock(cAliK990,.T.)
- (cAliK990)->FILIAL := cFilAnt
- (cAliK990)->REG := "K990"
- (cAliK990)->QTD_LIN_K := nRegsto+1
- (cAliK990)->(MsUnLock())
- //----------------------//
- // Grava Tabela de Hist //
- //----------------------//
- BlkGrvTab(cAliK990,"D3U",aTmpRegK[K990][4],dDataAte,lRepross)
- Return
- /*苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
- 北谀哪哪哪哪穆哪哪哪哪哪哪哪哪履哪哪哪履哪哪哪哪哪哪哪哪穆哪哪哪履哪哪哪哪目北
- 北矲un嘺o ?REG0210 ?Autor ?Materiais ?Data ?28/07/14 潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪哪哪聊哪哪哪聊哪哪哪哪哪哪哪哪牧哪哪哪聊哪哪哪哪拇北
- 北矰escricao ?Funcao responsavel pela gravacao do Registro 0210 潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪拇北
- 北砅arametros?cAliasTRB = Alias do arquivo de trabalho do Bloco 潮?
- 北? ?cProduto = Codigo do Produto Produzido 潮?
- 北? ?dDataDe = Data Inicial da Apuracao 潮?
- 北? ?dDataAte = Data Final da Apuracao 潮?
- 北? ?cOP = Numero da OP 潮?
- 北? ?lNegEst = Indica se trata estrutura negativa 潮?
- 北滥哪哪哪哪牧哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁北
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
- 哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌*/
- Function REG0210(cAli0210,cProduto,dDataDe,dDataAte,cOP,lNegEst,lRepross)
- Local cQuery := ""
- Local cUlRevisao:= ""
- Local nQuantBase:= 0
- Local cAliasTmp := GetNextAlias()
- Local aAreaSB1 := SB1->(GetArea())
- Local aComp := {}
- Local aNegat := {}
- Local aFantasma := {}
- Local nCtrlRec := 0
- Local nX
- Local cSG1Local := ""
- Default lNegEst := .F.
- Default lRepross := .F.
- dbSelectArea("SB1")
- dbSetOrder(1)
- If (SB1->(MsSeek(xFilial("SB1")+cProduto)))
- cUlRevisao := IIF(lPCPREVATU , PCPREVATU(SB1->B1_COD), SB1->B1_REVATU)
- nQuantBase := If(SB1->B1_QB == 0, 1, SB1->B1_QB)
- EndIf
- If !Empty(cOP)
- dbSelectArea("SC2")
- dbSetOrder(1)
- If (SC2->(MsSeek(xFilial("SC2")+cOP)))
- cUlRevisao := IIF(Empty(SC2->C2_REVISAO),cUlRevisao, SC2->C2_REVISAO)
- EndIf
- EndIf
- cQuery := "SELECT SG1.G1_FILIAL, SG1.G1_COD, SG1.G1_COMP, SG1.G1_QUANT, SG1.G1_PERDA, "
- cQuery += "SB1C.B1_FANTASM FROM "+RetSqlName("SG1")+" SG1 JOIN "+RetSqlName("SB1")+" SB1 ON "
- cQuery += "SB1.B1_FILIAL = '"+xFilial('SB1')+"' AND SB1.B1_COD = SG1.G1_COD AND "
- cQuery += "SB1.D_E_L_E_T_ = ' ' "
- cQuery += "JOIN "+RetSqlName("SB1")+" SB1C ON SB1C.B1_FILIAL = '"+xFilial('SB1')+"' AND "
- cQuery += "SB1C.B1_COD = SG1.G1_COMP AND SB1C.D_E_L_E_T_ = ' ' "
- If lCpoBZTP
- cQuery += "LEFT JOIN "+RetSqlName("SBZ")+" SBZ ON SBZ.BZ_FILIAL = '"+xFilial('SBZ')+"' AND SBZ.BZ_COD = SB1C.B1_COD AND SBZ.D_E_L_E_T_ = ' ' "
- EndIf
- cQuery += "WHERE SG1.G1_FILIAL = '"+xFilial('SG1')+"' AND "
- cQuery += "SG1.G1_COD = '"+cProduto+"' AND SG1.G1_REVINI <= '"+cUlRevisao+"' AND "
- cQuery += "SG1.G1_REVFIM >= '"+cUlRevisao+"' AND SG1.D_E_L_E_T_ = ' ' AND "
- cQuery += "SB1.B1_CCCUSTO = ' ' AND SB1.B1_COD NOT LIKE 'MOD%' AND "
- cQuery += "SB1C.B1_CCCUSTO = ' ' AND SB1C.B1_COD NOT LIKE 'MOD%' AND "
- cQuery += "SG1.G1_INI <= '"+DtoS(dDataDe)+"' AND SG1.G1_FIM >= '"+DtoS(dDataAte)+"' AND "
- If lCpoBZTP
- cQuery += MatIsNull()+"(SBZ.BZ_TIPO,SB1C.B1_TIPO) "
- Else
- cQuery += "SB1C.B1_TIPO "
- EndIf
- cQuery += " IN ("+cTipo00+","+cTipo01+","+cTipo02+","+cTipo03+","+cTipo04+","
- If !lNegEst
- cQuery += cTipo05+","
- EndIf
- cQuery += cTipo10+") "
- If !lNegEst
- cQuery += "AND G1_QUANT > 0 "
- EndIf
- cQuery += "ORDER BY 1,2,3"
- cQuery := ChangeQuery(cQuery)
- dbUseArea(.T.,"TOPCONN",TcGenQry(,,cQuery),cAliasTmp,.T.,.T.)
- If lNegEst
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Tratamento Estrutura Negativa ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- While !(cAliasTmp)->(Eof())
- If (cAliasTmp)->B1_FANTASM <> "S"
- If (cAliasTmp)->G1_QUANT < 0
- Aadd(aNegat,{(cAliasTmp)->G1_FILIAL,(cAliasTmp)->G1_COMP,(cAliasTmp)->G1_QUANT / nQuantBase,(cAliasTmp)->G1_PERDA,cProduto})
- Else
- Aadd(aComp ,{(cAliasTmp)->G1_FILIAL,(cAliasTmp)->G1_COMP,(cAliasTmp)->G1_QUANT / nQuantBase,(cAliasTmp)->G1_PERDA,cProduto})
- EndIf
- EndIf
- (cAliasTmp)->(dbSkip())
- EndDo
- Else
- cSG1Local := xFilial("SG1")
- While !(cAliasTmp)->(Eof())
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Tratamento Produto Fantasma ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- If (cAliasTmp)->B1_FANTASM == "S"
- aFantasma := REG0210Fan((cAliasTmp)->G1_COMP,dDataDe,dDataAte,@nCtrlRec)
- For nX := 1 to Len(aFantasma)
- If !((cAli0210)->(MsSeek(cSG1Local+(cAliasTmp)->G1_COD+aFantasma[nX,2])))
- Reclock(cAli0210,.T.)
- (cAli0210)->FILIAL := aFantasma[nX,1]
- (cAli0210)->REG := "0210"
- (cAli0210)->COD_I_COMP := aFantasma[nX,2]
- (cAli0210)->QTD_COMP := aFantasma[nX,3] * (cAliasTmp)->G1_QUANT
- (cAli0210)->PERDA := aFantasma[nX,4]
- (cAli0210)->COD_ITEM := (cAliasTmp)->G1_COD
- (cAli0210)->(MsUnLock())
- EndIf
- Next nX
- nCtrlRec := 0
- Else
- If !((cAli0210)->(MsSeek(cSG1Local+(cAliasTmp)->G1_COD+(cAliasTmp)->G1_COMP)))
- Reclock(cAli0210,.T.)
- (cAli0210)->FILIAL := (cAliasTmp)->G1_FILIAL
- (cAli0210)->REG := "0210"
- (cAli0210)->COD_I_COMP := (cAliasTmp)->G1_COMP
- (cAli0210)->QTD_COMP := (((cAliasTmp)->G1_QUANT / nQuantBase)/(100 -(cAliasTmp)->G1_PERDA)) * 100
- (cAli0210)->PERDA := (cAliasTmp)->G1_PERDA
- (cAli0210)->COD_ITEM := (cAliasTmp)->G1_COD
- (cAli0210)->(MsUnLock())
- EndIf
- EndIf
- (cAliasTmp)->(dbSkip())
- EndDo
- EndIf
- //----------------------//
- // Grava Tabela de Hist //
- //----------------------//
- BlkGrvTab(cAli0210,"D3F",aTmpRegK[0210][4],dDataAte,lRepross)
- (cAliasTmp)->(dbCloseArea())
- RestArea(aAreaSB1)
- Return {aNegat,aComp}
- /*苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
- 北谀哪哪哪哪穆哪哪哪哪哪哪哪哪履哪哪哪履哪哪哪哪哪哪哪哪穆哪哪哪履哪哪哪哪目北
- 北矲un嘺o ?REG0210Fan ?Autor ?Materiais ?Data ?11/02/16 潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪哪哪聊哪哪哪聊哪哪哪哪哪哪哪哪牧哪哪哪聊哪哪哪哪拇北
- 北矰escricao ?Retorna os componentes de um produto fantasma 潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪拇北
- 北砅arametros?cProduto = Codigo do Produto Produzido 潮?
- 北? ?dDataDe = Data Inicial da Apuracao 潮?
- 北? ?dDataAte = Data Final da Apuracao 潮?
- 北? ?nCtrlRec = Controle de recursividade 潮?
- 北滥哪哪哪哪牧哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁北
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
- 哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌*/
- Static Function REG0210Fan(cProduto,dDataDe,dDataAte,nCtrlRec)
- Local aAreaSB1 := SB1->(GetArea())
- Local aArea := GetArea()
- Local cAliasFtm := GetNextAlias()
- Local cUlRevisao:= ""
- Local aRet := {}
- Local aFantasma := {}
- Local nQuantBase:= 0
- Local nX
- // Controle de Recursividade
- nCtrlRec++
- If nCtrlRec > 99
- Return aRet
- EndIf
- dbSelectArea("SB1")
- dbSetOrder(1)
- If (SB1->(MsSeek(xFilial("SB1")+cProduto)))
- cUlRevisao := IIF(lPCPREVATU , PCPREVATU(SB1->B1_COD), SB1->B1_REVATU)
- nQuantBase := If(SB1->B1_QB == 0, 1, SB1->B1_QB)
- EndIf
- cQuery := "SELECT SG1.G1_FILIAL, SG1.G1_COD, SG1.G1_COMP, SG1.G1_QUANT, SG1.G1_PERDA, "
- cQuery += "SB1C.B1_FANTASM FROM "+RetSqlName("SG1")+" SG1 JOIN "+RetSqlName("SB1")+" SB1 ON "
- cQuery += "SB1.B1_FILIAL = '"+xFilial('SB1')+"' AND SB1.B1_COD = SG1.G1_COD AND "
- cQuery += "SB1.D_E_L_E_T_ = ' ' "
- cQuery += "JOIN "+RetSqlName("SB1")+" SB1C ON SB1C.B1_FILIAL = '"+xFilial('SB1')+"' AND "
- cQuery += "SB1C.B1_COD = SG1.G1_COMP AND SB1C.D_E_L_E_T_ = ' ' "
- If lCpoBZTP
- cQuery += "LEFT JOIN "+RetSqlName("SBZ")+" SBZ ON SBZ.BZ_FILIAL = '"+xFilial('SBZ')+"' AND SBZ.BZ_COD = SB1C.B1_COD AND SBZ.D_E_L_E_T_ = ' ' "
- EndIf
- cQuery += "WHERE SG1.G1_FILIAL = '"+xFilial('SG1')+"' AND "
- cQuery += "SG1.G1_COD = '"+cProduto+"' AND SG1.G1_REVINI <= '"+cUlRevisao+"' AND "
- cQuery += "SG1.G1_REVFIM >= '"+cUlRevisao+"' AND SG1.D_E_L_E_T_ = ' ' AND "
- cQuery += "SB1.B1_CCCUSTO = ' ' AND SB1.B1_COD NOT LIKE 'MOD%' AND "
- cQuery += "SB1C.B1_CCCUSTO = ' ' AND SB1C.B1_COD NOT LIKE 'MOD%' AND "
- cQuery += "SG1.G1_INI <= '"+DtoS(dDataDe)+"' AND SG1.G1_FIM >= '"+DtoS(dDataAte)+"' AND "
- If lCpoBZTP
- cQuery += MatIsNull()+"(SBZ.BZ_TIPO,SB1C.B1_TIPO) "
- Else
- cQuery += "SB1C.B1_TIPO "
- EndIf
- cQuery += " IN ("+cTipo00+","+cTipo01+","+cTipo02+","+cTipo03+","+cTipo04+","
- cQuery += cTipo05+","+cTipo06+","+cTipo10+") "
- cQuery += "ORDER BY 1,2,3"
- cQuery := ChangeQuery(cQuery)
- dbUseArea(.T.,"TOPCONN",TcGenQry(,,cQuery),cAliasFtm,.T.,.T.)
- While !(cAliasFtm)->(Eof())
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Recursividade no Produto Fantasma ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- If (cAliasFtm)->B1_FANTASM == "S"
- aFantasma := REG0210Fan((cAliasFtm)->G1_COMP,dDataDe,dDataAte,@nCtrlRec)
- For nX := 1 to Len(aFantasma)
- Aadd(aRet ,{aFantasma[nX,1],aFantasma[nX,2],aFantasma[nX,3],aFantasma[nX,4],aFantasma[nX,5]})
- Next nX
- Else
- Aadd(aRet ,{(cAliasFtm)->G1_FILIAL,(cAliasFtm)->G1_COMP,(cAliasFtm)->G1_QUANT / nQuantBase,(cAliasFtm)->G1_PERDA,cProduto})
- EndIf
- (cAliasFtm)->(dbSkip())
- EndDo
- (cAliasFtm)->(dbCloseArea())
- RestArea(aAreaSB1)
- RestArea(aArea)
- Return aRet
- /*苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
- 北谀哪哪哪哪穆哪哪哪哪哪哪哪哪履哪哪哪履哪哪哪哪哪哪哪哪穆哪哪哪履哪哪哪哪目北
- 北矲un嘺o ?GetSubst ?Autor ?Materiais ?Data ?30/09/14 潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪哪哪聊哪哪哪聊哪哪哪哪哪哪哪哪牧哪哪哪聊哪哪哪哪拇北
- 北矰escricao ?Retorna o produto substituto (alternativo) utilizado no K235潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪拇北
- 北砅arametros?cBloco = Codigo do Bloco 潮?
- 北? ?cProduto = Codigo do Produto Consumido 潮?
- 北? ?cOP = Numero da OP 潮?
- 北? ?dDataDe = Data Inicial da Apuracao 潮?
- 北? ?dDataAte = Data Final da Apuracao 潮?
- 北滥哪哪哪哪牧哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁北
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
- 哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌*/
- Function GetSubst(cProduto,cOP,dDataDe,dDataAte)
- Local cCodOri := Space(Len(SD3->D3_COD))
- Local cAliasTmp := GetNextAlias()
- Local aArea := GetArea()
- Local cProdPai := ""
- Local cUlRev := ""
- Local cQuery := ""
- dbSelectArea("SC2")
- dbSetOrder(1)
- If (SC2->(MsSeek(xFilial("SC2")+cOP)))
- cProdPai := SC2->C2_PRODUTO
- cUlRev := SC2->C2_REVISAO
- cQuery := "SELECT SG1.G1_FILIAL, SG1.G1_COD, SG1.G1_COMP,SGI.GI_PRODALT "
- cQuery += "FROM "+RetSqlName("SG1")+" SG1 JOIN "+RetSqlName("SGI")+" SGI ON "
- cQuery += "SGI.GI_FILIAL = '"+xFilial('SGI')+"' AND SGI.D_E_L_E_T_ = ' ' AND "
- cQuery += "SGI.GI_PRODORI = SG1.G1_COMP "
- cQuery += "JOIN "+RetSqlName("SB1")+" SB1 ON SB1.B1_FILIAL = '"+xFilial('SB1')+"' AND "
- cQuery += "SB1.B1_COD = SG1.G1_COD AND SB1.D_E_L_E_T_ = ' ' "
- cQuery += "JOIN "+RetSqlName("SB1")+" SB1C ON SB1C.B1_FILIAL = '"+xFilial('SB1')+"' AND "
- cQuery += "SB1C.B1_COD = SGI.GI_PRODORI AND SB1C.D_E_L_E_T_ = ' ' "
- If lCpoBZTP
- cQuery += "LEFT JOIN "+RetSqlName("SBZ")+" SBZ ON SBZ.BZ_FILIAL = '"+xFilial('SBZ')+"' AND SBZ.BZ_COD = SB1C.B1_COD AND SBZ.D_E_L_E_T_ = ' ' "
- EndIf
- cQuery += "WHERE SG1.G1_FILIAL = '"+xFilial('SG1')+"' AND "
- cQuery += "SG1.G1_COD = '"+cProdPai+"' AND SGI.GI_PRODALT = '"+cProduto+"' AND "
- cQuery += "SG1.G1_REVINI <= '"+cUlRev+"' AND SG1.G1_REVFIM >= '"+cUlRev+"' AND "
- cQuery += "SG1.G1_INI <= '"+DtoS(dDataDe)+"' AND SG1.G1_FIM >= '"+DtoS(dDataAte)+"' AND "
- cQuery += "SB1.B1_CCCUSTO = ' ' AND SB1.B1_COD NOT LIKE 'MOD%' AND "
- cQuery += "SB1C.B1_CCCUSTO = ' ' AND SB1C.B1_COD NOT LIKE 'MOD%' AND "
- If lCpoBZTP
- cQuery += MatIsNull()+"(SBZ.BZ_TIPO,SB1C.B1_TIPO) "
- Else
- cQuery += "SB1C.B1_TIPO "
- EndIf
- cQuery += " IN ("+cTipo00+","+cTipo01+","+cTipo02+","+cTipo03+","
- cQuery += cTipo04+","+cTipo05+","+cTipo06+","+cTipo10+") AND SG1.D_E_L_E_T_ = ' '"
- cQuery := ChangeQuery(cQuery)
- dbUseArea(.T.,"TOPCONN",TcGenQry(,,cQuery),cAliasTmp,.T.,.T.)
- If !(cAliasTmp)->(Eof())
- cCodOri := (cAliasTmp)->G1_COMP
- EndIf
- (cAliasTmp)->(dbCloseArea())
- EndIf
- RestArea(aArea)
- Return cCodOri
- /*苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
- 北谀哪哪哪哪穆哪哪哪哪哪哪哪哪履哪哪哪履哪哪哪哪哪哪哪哪穆哪哪哪履哪哪哪哪目北
- 北矲un嘺o ?REG0200 ?Autor ?Materiais ?Data ?29/12/16 潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪哪哪聊哪哪哪聊哪哪哪哪哪哪哪哪牧哪哪哪聊哪哪哪哪拇北
- 北矰escricao ?Grava os produtos utilizados no processamento do Bloco K 潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪拇北
- 北砅arametros?aAlias = Alias dos arquivos temporarios do Bloco K 潮?
- 北? ?aRegistr = Lista dos arquivos temporarios do Blooc K 潮?
- 北滥哪哪哪哪牧哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁北
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
- 哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌*/
- Static Function REG0200(aAlias,aRegistr)
- Local aArea := GetArea()
- Local nX
- dbSelectArea(aAlias[0200])
- dbSetOrder(1)
- For nX := 1 To Len(aRegistr)
- If !(aRegistr[nX] $ "K001|K100|K990|0200|K290|")
- (aAlias[nX])->(dbGoTop())
- While !(aAlias[nX])->(Eof())
- Do Case
- Case aRegistr[nX] == "K210"
- Grav0200((aAlias[nX])->COD_ITEM_O ,aAlias[0200] )
- Case aRegistr[nX] == "K215"
- Grav0200((aAlias[nX])->COD_ITEM_D ,aAlias[0200] )
- Case aRegistr[nX] == "K220"
- Grav0200((aAlias[nX])->COD_ITEM_O ,aAlias[0200] )
- Grav0200((aAlias[nX])->COD_ITEM_D ,aAlias[0200] )
- Case aRegistr[nX] == "0210"
- Grav0200((aAlias[nX])->COD_ITEM ,aAlias[0200] )
- Grav0200((aAlias[nX])->COD_I_COMP ,aAlias[0200] )
- Case aRegistr[nX] == "K300"
- //
- Otherwise
- Grav0200((aAlias[nX])->COD_ITEM ,aAlias[0200] )
- EndCase
- (aAlias[nX])->(dbSkip())
- EndDo
- EndIf
- Next nX
- RestArea(aArea)
- Return
- /*/{Protheus.doc} Grav0200
- Faz a gravacao do produto para o registro 0200
- @author reynaldo
- @since 05/10/2018
- @version 1.0
- @return ${return}, ${return_description}
- @param cCodItem, characters, descricao
- @param cAli0200, characters, descricao
- @type function
- /*/
- Static Function Grav0200(cCodItem ,cAli0200 )
- If !(cAli0200)->(MsSeek(cCodItem))
- Reclock(cAli0200,.T.)
- (cAli0200)->COD_ITEM := cCodItem
- (cAli0200)->(MsUnlock())
- EndIf
- Return
- /*苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘?
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北?
- 北谀哪哪哪哪穆哪哪哪哪哪哪履哪哪穆哪哪哪哪哪哪哪哪哪哪哪履哪哪穆哪哪哪哪哪勘?
- 北矲un噮o ?GetIniProd 矨utor ?TOTVS S/A ?Data ?6/10/2015潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪聊哪哪牧哪哪哪哪哪哪哪哪哪哪哪聊哪哪牧哪哪哪哪哪幢?
- 北矰escri噮o ?Retorna a data do inicio real do processo produtivo. 潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪幢?
- 北砅arametros?cOP = Numero da OP 潮?
- 北滥哪哪哪哪牧哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪俦?
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北?
- 哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌?/
- Function GetIniProd(cOP)
- Local cQuery := ""
- Local dRet := StoD("")
- Local aArea := GetArea()
- Local cAliasTmp := GetNextAlias()
- cQuery := "SELECT MIN(D3_EMISSAO) DTINICIO "
- cQuery += "FROM " + RetSqlName("SD3") + " SD3 JOIN " + RetSqlName("SB1") + " SB1 "
- cQuery += "ON SB1.B1_FILIAL = '"+xFilial("SB1")+"' AND SB1.B1_COD = SD3.D3_COD "
- cQuery += "AND SB1.D_E_L_E_T_ = ' ' "
- cQuery += "WHERE SD3.D3_FILIAL = '" + xFilial("SD3") + "' "
- cQuery += "AND SD3.D3_OP = '" + cOP + "' "
- cQuery += "AND SD3.D3_ESTORNO = ' ' "
- cQuery += "AND SD3.D_E_L_E_T_ = ' ' "
- cQuery += "GROUP BY D3_OP"
- cQuery := ChangeQuery(cQuery)
- dbUseArea(.T.,"TOPCONN",TcGenQry(,,cQuery),cAliasTmp,.T.,.T.)
- If !(cAliasTmp)->(Eof())
- dRet := StoD((cAliasTmp)->DTINICIO)
- EndIf
- (cAliasTmp)->(dbCloseArea())
- RestArea(aArea)
- Return dRet
- /*苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘?
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北?
- 北谀哪哪哪哪穆哪哪哪哪哪哪履哪哪穆哪哪哪哪哪哪哪哪哪哪哪履哪哪穆哪哪哪哪哪勘?
- 北矲un噮o ?ProcNegEst 矨utor ?TOTVS S/A ?Data ?3/10/2015潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪聊哪哪牧哪哪哪哪哪哪哪哪哪哪哪聊哪哪牧哪哪哪哪哪幢?
- 北矰escri噮o ?Realiza a gravacao dos registros 0210, K230 e K235 quando 潮?
- 北? ?cliente trabalha com conceito de estrutura negativa 潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪幢?
- 北砅arametros?cAli0210 = Alias do arquivo de trabalho O210 潮?
- 北? ?cAliK230 = Alias do arquivo de trabalho K230 潮?
- 北? ?cAliK235 = Alias do arquivo de trabalho K235 潮?
- 北? ?dDataDe = Data Inicial da Apuracao 潮?
- 北? ?dDataAte = Data Final da Apuracao 潮?
- 北滥哪哪哪哪牧哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪俦?
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北?
- 哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌?/
- Static Function ProcNegEst(cAli0210,cAliK230,cAliK235,dDataDe,dDataAte,lRePross)
- Local aEstrut := {}
- Local nX
- Local cFilAux := ""
- Local cOP := ""
- Local nQuant := 0
- Local nQtdAux := 0
- Local nRecno := 0
- Local dDtIni, dDtFim
- (cAliK230)->(dbGoTop())
- While !(cAliK230)->(Eof())
- aEstrut := REG0210(cAli0210,(cAliK230)->COD_ITEM,dDataDe,dDataAte,(cAliK230)->COD_DOC_OP,.T.,lRePross)
- If Len(aEstrut[1]) > 0
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Grava K230 do Co-Produto ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- cFilAux := (cAliK230)->FILIAL
- cOP := (cAliK230)->COD_DOC_OP
- dDtIni := (cAliK230)->DT_INI_OP
- dDtFim := (cAliK230)->DT_FIN_OP
- nQuant := (cAliK230)->QTD_ENC
- nRecno := (cAliK230)->(Recno())
- For nX := 1 to Len(aEstrut[1])
- nQtdAux := GetCoProd(cOP,aEstrut[1][nX][2],dDataDe,dDataAte)
- If nQtdAux > 0 .And. !((cAliK230)->(MsSeek(cFilAux+cOP+aEstrut[1][nX][2])))
- Reclock(cAliK230,.T.)
- (cAliK230)->FILIAL := cFilAux
- (cAliK230)->REG := "K230"
- (cAliK230)->DT_INI_OP := dDtIni
- (cAliK230)->DT_FIN_OP := dDtFim
- (cAliK230)->COD_DOC_OP := cOP
- (cAliK230)->COD_ITEM := aEstrut[1][nX][2]
- (cAliK230)->QTD_ENC := nQtdAux
- (cAliK230)->(MsUnLock())
- nRegsto++
- EndIf
- Next nX
- (cAliK230)->(dbGoto(nRecno))
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Grava 0210 do Co-Produto ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- NegEst0210(aEstrut,cAli0210)
- EndIf
- (cAliK230)->(dbSkip())
- EndDo
- Return
- /*苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘?
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北?
- 北谀哪哪哪哪穆哪哪哪哪哪哪履哪哪穆哪哪哪哪哪哪哪哪哪哪哪履哪哪穆哪哪哪哪哪勘?
- 北矲un噮o ?GetCoProd 矨utor ?TOTVS S/A ?Data ?3/10/2015潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪聊哪哪牧哪哪哪哪哪哪哪哪哪哪哪聊哪哪牧哪哪哪哪哪幢?
- 北矰escri噮o ?Retorna a quantidade da Co-producao realizada para a OP 潮?
- 北? ?dentro do periodo 潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪幢?
- 北砅arametros?cOP = Numero da OP 潮?
- 北? ?cProduto = Codigo do Produto Produzido 潮?
- 北? ?dDataDe = Data Inicial da Apuracao 潮?
- 北? ?dDataAte = Data Final da Apuracao 潮?
- 北滥哪哪哪哪牧哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪俦?
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北?
- 哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌?/
- Static Function GetCoProd(cOP,cProduto,dDataDe,dDataAte)
- Local nQuant := 0
- Local cQuery := ""
- Local aArea := GetArea()
- Local cAliasTmp := GetNextAlias()
- cQuery := "SELECT SUM(D3_QUANT) QUANT, D3_COD, D3_OP "
- cQuery += "FROM " + RetSqlName("SD3") + " SD3 JOIN " + RetSqlName("SB1") + " SB1 ON SB1.B1_FILIAL = '"+xFilial("SB1")+"' "
- cQuery += "AND SB1.B1_COD = SD3.D3_COD AND SB1.D_E_L_E_T_ = ' ' "
- cQuery += "WHERE SD3.D3_FILIAL = '"+xFilial("SD3")+"' AND SD3.D3_OP = '" + cOP + "' "
- cQuery += "AND SD3.D3_CF = 'DE1' AND SD3.D3_COD = '" + cProduto + "' AND SD3.D3_ESTORNO = ' ' "
- cQuery += "AND SD3.D3_EMISSAO BETWEEN '" + DtoS(dDataDe) + "' AND '" + DtoS(dDataAte) + "' "
- cQuery += "AND SD3.D_E_L_E_T_ = ' ' "
- cQuery += "GROUP BY D3_COD, D3_OP "
- cQuery := ChangeQuery(cQuery)
- dbUseArea(.T.,"TOPCONN",TcGenQry(,,cQuery),cAliasTmp,.T.,.T.)
- If !(cAliasTmp)->(Eof())
- nQuant := (cAliasTmp)->QUANT
- EndIf
- (cAliasTmp)->(dbCloseArea())
- RestArea(aArea)
- Return nQuant
- /*苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘?
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北?
- 北谀哪哪哪哪穆哪哪哪哪哪哪履哪哪穆哪哪哪哪哪哪哪哪哪哪哪履哪哪穆哪哪哪哪哪勘?
- 北矲un噮o ?NegEst0210 矨utor ?TOTVS S/A ?Data ?3/10/2015潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪聊哪哪牧哪哪哪哪哪哪哪哪哪哪哪聊哪哪牧哪哪哪哪哪幢?
- 北矰escri噮o ?Grava o Registro 0210 para os componentes que que sao 潮?
- 北? ?negativos na estrutura de um PA 潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪幢?
- 北砅arametros?aEstrut = Vetor com Comp. Negativos [1] e Comuns [2] 潮?
- 北? ?cAli0210 = Alias do arquivo de trabalho O210 潮?
- 北滥哪哪哪哪牧哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪俦?
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北?
- 哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌?/
- Static Function NegEst0210(aEstrut,cAli0210)
- Local aArea := GetArea()
- Local aArea0210 := (cAli0210)->(GetArea())
- Local nFator := 0
- Local nQtd := 1
- Local cProduto := ""
- Local cFilAux := ""
- Local cChave := ""
- Local nX, nY
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Soma as "Producoes" e "Co-Producoes" ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- For nX := 1 to Len(aEstrut[1])
- nQtd += If(aEstrut[1][nX][3] < 0, aEstrut[1][nX][3] * -1, aEstrut[1][nX][3])
- Next nX
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Grava o 0210 para "Co-Producoes" ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- For nX := 1 to Len(aEstrut[1])
- cFilAux := aEstrut[1][nX][1]
- cProduto := aEstrut[1][nX][2]
- cChave := cFilAux+aEstrut[1][1][5]
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Calcula o Fator de Consumo Especifico ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- nFator := (aEstrut[1][nX][3] * -1) / nQtd
- For nY := 1 to Len(aEstrut[2])
- If !((cAli0210)->(MsSeek(cFilAux+cProduto+aEstrut[2][nY][2])))
- Reclock(cAli0210,.T.)
- (cAli0210)->FILIAL := cFilAux
- (cAli0210)->REG := "0210"
- (cAli0210)->COD_I_COMP := aEstrut[2][nY][2]
- (cAli0210)->QTD_COMP := aEstrut[2][nY][3] * nFator
- (cAli0210)->PERDA := aEstrut[2][nY][4]
- (cAli0210)->COD_ITEM := cProduto
- (cAli0210)->(MsUnLock())
- EndIf
- Next nY
- Next nX
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Ajusta os componentes da estrutura da "Producao" ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- For nY := 1 to Len(aEstrut[2])
- If ((cAli0210)->(MsSeek(aEstrut[2][nY][1]+aEstrut[2][nY][5]+aEstrut[2][nY][2])))
- Reclock(cAli0210,.F.)
- (cAli0210)->QTD_COMP := aEstrut[2][nY][3] * (1 / nQtd)
- (cAli0210)->(MsUnLock())
- EndIf
- Next nY
- RestArea(aArea0210)
- RestArea(aArea)
- Return
- /*苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘?
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北?
- 北谀哪哪哪哪穆哪哪哪哪哪哪履哪哪穆哪哪哪哪哪哪哪哪哪哪哪履哪哪穆哪哪哪哪哪勘?
- 北矲un噮o ?TrocaTipo 矨utor ?TOTVS S/A ?Data ?5/11/2015潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪聊哪哪牧哪哪哪哪哪哪哪哪哪哪哪聊哪哪牧哪哪哪哪哪幢?
- 北矰escri噮o ?Chama o ponto de entrada SPDFIS001 e realiza a troca dos 潮?
- 北? ?Tipos de Produto do Sistema X SPED. 潮?
- 北滥哪哪哪哪牧哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪俦?
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北?
- 哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌?/
- Static Function TrocaTipo()
- Local aTipo := {}
- Local cTipo := ""
- Local nX
- If ExistBlock("SPDFIS001")
- aTipo := ExecBlock("SPDFIS001", .F., .F., {aTipo})
- EndIf
- For nX := 1 to Len(aTipo)
- If !(aTipo[nX][2] $ "07|08|09")
- If "|" $ aTipo[nX][1]
- aTipo[nX][1] := StrTran(aTipo[nX][1],"|","','")
- EndIf
- cTipo := "cTipo" + aTipo[nX][2]
- &(cTipo) := "'" + aTipo[nX][1] + "'"
- EndIf
- Next nX
- Return
- /*苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘?
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北?
- 北谀哪哪哪哪穆哪哪哪哪哪哪履哪哪穆哪哪哪哪哪哪哪哪哪哪哪履哪哪穆哪哪哪哪哪勘?
- 北矲un噮o ?REG0210Mov 矨utor ?TOTVS S/A ?Data ?9/11/2015潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪聊哪哪牧哪哪哪哪哪哪哪哪哪哪哪聊哪哪牧哪哪哪哪哪幢?
- 北矰escri噮o ?Realiza a gravacao do Registro 0210 com base nos movimentos潮?
- 北? ?realizados no perido. 潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪幢?
- 北砅arametros?cAliK230 = Alias do arquivo de trabalho K230 潮?
- 北? ?cAliK235 = Alias do arquivo de trabalho K235 潮?
- 北? ?cAli0210 = Alias do arquivo de trabalho O210 潮?
- 北滥哪哪哪哪牧哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪俦?
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北?
- 哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌?/
- Static Function REG0210Mov(cAliK230,cAliK235,cAli0210,dDataDe,dDataAte)
- Local aArea := GetArea()
- Local aQuant := {}
- Local nPerda := 0
- Local lPerdPadr := SuperGetMV("MV_BLKPERD",.F.,.F.)
- Local cSD4Filial := ""
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Posiciona no inicio das tabelas ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- (cAliK230)->(dbGoTop())
- (cAliK235)->(dbGoTop())
- dbSelectArea("SD4")
- dbSetOrder(2) // D4_FILIAL+D4_OP+D4_COD+D4_LOCAL
- cSD4Filial := xFilial("SD4")
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Percorre todas as OP's do Registro K230 ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- While !(cAliK230)->(Eof())
- If (cAliK235)->(MsSeek((cAliK230)->(FILIAL+COD_DOC_OP))) // FILIAL+COD_DOC_OP+COD_ITEM
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Percorre o Registro K235 de cada OP do Registro K230 ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- While (cAliK235)->(FILIAL+COD_DOC_OP) == (cAliK230)->(FILIAL+COD_DOC_OP)
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Verifica se ha empenho na SD4 para aumentar a precisao, ?
- //?caso contrario usa quantidade consumida no periodo. ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- If SD4->(MsSeek(cSD4Filial+(cAliK235)->(COD_DOC_OP+COD_ITEM)))
- aQuant := GetQtdComp(1,(cAliK235)->FILIAL,(cAliK235)->COD_DOC_OP,(cAliK235)->COD_ITEM,(cAliK230)->QTD_ENC)
- Else
- aQuant := GetQtdComp(2,(cAliK235)->FILIAL,(cAliK235)->COD_DOC_OP,(cAliK235)->COD_ITEM,(cAliK230)->QTD_ENC,(cAliK235)->QTD)
- EndIf
- nPerdMov:= GetPerdMov((cAliK235)->COD_DOC_OP,(cAliK235)->COD_ITEM,dDataDe,dDataAte)
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Realiza a gravacao do Registro 0210 ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- If !(cAli0210)->(MsSeek((cAliK230)->(FILIAL+COD_ITEM)+(cAliK235)->(COD_ITEM)))
- Reclock(cAli0210,.T.)
- (cAli0210)->FILIAL := (cAliK230)->FILIAL
- (cAli0210)->REG := "0210"
- (cAli0210)->COD_ITEM := (cAliK230)->COD_ITEM
- If (cAliK235)->COD_INS_SU == PADR(Nil,len((cAliK235)->COD_INS_SU))
- (cAli0210)->COD_I_COMP := (cAliK235)->COD_ITEM
- Else
- (cAli0210)->COD_I_COMP := (cAliK235)->COD_INS_SU
- EndIf
- (cAli0210)->QTD_CONS := aQuant[1] // Campo Auxiliar
- (cAli0210)->QTD_PROD := aQuant[2] // Campo Auxiliar
- If lPerdPadr
- (cAli0210)->QTD_COMP := ((cAli0210)->QTD_CONS - nPerdMov) / (cAli0210)->QTD_PROD
- (cAli0210)->PERDA := (nPerdMov/(cAli0210)->QTD_CONS) * 100
- Else
- (cAli0210)->QTD_COMP := (cAli0210)->QTD_CONS / (cAli0210)->QTD_PROD
- (cAli0210)->PERDA := 0
- EndIf
- (cAli0210)->(MsUnLock())
- nRegsto++
- Else
- If lPerdPadr
- nPerda := ((cAli0210)->PERDA/100) * (cAli0210)->QTD_COMP //-- Recupera perda em quantidade para n鉶 misturar percentuais de OPs distintas
- nPerda += nPerdMov //-- Soma quantidade perdida
- EndIf
- Reclock(cAli0210,.F.)
- (cAli0210)->QTD_CONS += aQuant[1] // Campo Auxiliar
- (cAli0210)->QTD_PROD += aQuant[2] // Campo Auxiliar
- If lPerdPadr
- (cAli0210)->QTD_COMP := ((cAli0210)->QTD_CONS - nPerdMov) / (cAli0210)->QTD_PROD
- (cAli0210)->PERDA := (nPerda/(cAli0210)->QTD_CONS) * 100 //-- Converte novamente para percentual
- Else
- (cAli0210)->QTD_COMP := (cAli0210)->QTD_CONS / (cAli0210)->QTD_PROD
- endif
- (cAli0210)->(MsUnLock())
- EndIf
- (cAliK235)->(dbSkip())
- EndDo
- EndIf
- (cAliK230)->(dbSkip())
- EndDo
- RestArea(aArea)
- Return
- /*苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘?
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北?
- 北谀哪哪哪哪穆哪哪哪哪哪哪履哪哪穆哪哪哪哪哪哪哪哪哪哪哪履哪哪穆哪哪哪哪哪勘?
- 北矲un噮o ?GetQtdComp 矨utor ?TOTVS S/A ?Data ?9/11/2015潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪聊哪哪牧哪哪哪哪哪哪哪哪哪哪哪聊哪哪牧哪哪哪哪哪幢?
- 北矰escri噮o ?Calcula a quantidade do componente para a producao do Pai: 潮?
- 北? ?nTipo = 1 : Baseado no empenho existente (SD4) 潮?
- 北? ?nTipo = 2 : Baseado nos movimentos do periodo 潮?
- 北滥哪哪哪哪牧哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪俦?
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北?
- 哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌?/
- Static Function GetQtdComp(nTipo,cFilK235,cOP,cComp,nQtdProd,nQtdCons)
- Local aArea := GetArea()
- Local aQuant := {0,0} // {"Componente","Produzido"}
- Local nQuantOP := 0
- Local cSD4Filial := xFilial("SD4")
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Guarda informacoes da Ordem de Producao ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- dbSelectArea("SC2")
- dbSetOrder(1)
- If (SC2->(MsSeek(xFilial("SC2")+cOP)))
- nQuantOP := SC2->C2_QUANT
- EndIf
- If nTipo == 1
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?TIPO 1 - Calculo baseado no empenho existente (SD4) ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- While SD4->(cSD4Filial+D4_OP+D4_COD) == cFilK235+cOP+cComp
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Desconsidera empenho negativo de estruturas negativas ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- If SD4->D4_QTDEORI > 0
- aQuant[1] += SD4->D4_QTDEORI
- EndIf
- SD4->(dbSkip())
- EndDo
- aQuant[2] := nQuantOP
- Else
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?TIPO 2 - Calculo baseado nos movimentos do periodo ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- aQuant[1] := nQtdCons
- If nQtdProd > 0
- aQuant[2] := nQtdProd
- Else
- aQuant[2] := nQuantOP
- EndIf
- EndIf
- RestArea(aArea)
- Return aQuant
- /*苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘?
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北?
- 北谀哪哪哪哪穆哪哪哪哪哪哪履哪哪穆哪哪哪哪哪哪哪哪哪哪哪履哪哪穆哪哪哪哪哪勘?
- 北矲un噮o ?REG0210Ter 矨utor ?TOTVS S/A ?Data ?8/12/2015潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪聊哪哪牧哪哪哪哪哪哪哪哪哪哪哪聊哪哪牧哪哪哪哪哪幢?
- 北矰escri噮o ?Realiza a gravacao do Registro 0210 com base nos movimentos潮?
- 北? ?das Notas de Entrada - Industrializacao em Terceiros. 潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪幢?
- 北砅arametros?cAli0210 = Alias do arquivo de trabalho O210 潮?
- 北? ?cAliK250 = Alias do arquivo de trabalho K250 潮?
- 北? ?cAliK255 = Alias do arquivo de trabalho K255 潮?
- 北滥哪哪哪哪牧哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪俦?
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北?
- 哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌?/
- Static Function REG0210Ter(cAli0210,cAliK250,cAliK255)
- Local aArea := GetArea()
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Posiciona no inicio das tabelas ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- (cAliK250)->(dbGoTop())
- (cAliK255)->(dbGoTop())
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Percorre todas as OP's do Registro K250 ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- While !(cAliK250)->(Eof())
- If (cAliK255)->(MsSeek((cAliK250)->(FILIAL+CHAVE))) //"FILIAL+CHAVE+COD_ITEM"
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Percorre o Registro K255 de cada Chave do Registro K250 ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- While (cAliK255)->(FILIAL+CHAVE) == (cAliK250)->(FILIAL+CHAVE)
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Realiza a gravacao do Registro 0210 ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- If !(cAli0210)->(MsSeek((cAliK250)->(FILIAL+COD_ITEM)+(cAliK255)->(COD_ITEM)))
- Reclock(cAli0210,.T.)
- (cAli0210)->FILIAL := (cAliK250)->FILIAL
- (cAli0210)->REG := "0210"
- (cAli0210)->COD_ITEM := (cAliK250)->COD_ITEM
- (cAli0210)->COD_I_COMP := (cAliK255)->COD_ITEM
- (cAli0210)->QTD_CONS := (cAliK255)->QTD // Campo Auxiliar
- (cAli0210)->QTD_PROD := (cAliK250)->QTD // Campo Auxiliar
- (cAli0210)->QTD_COMP := (cAli0210)->QTD_CONS / (cAli0210)->QTD_PROD
- (cAli0210)->PERDA := 0
- (cAli0210)->(MsUnLock())
- nRegsto++
- Else
- Reclock(cAli0210,.F.)
- (cAli0210)->QTD_CONS += (cAliK255)->QTD // Campo Auxiliar
- (cAli0210)->QTD_PROD += (cAliK250)->QTD // Campo Auxiliar
- (cAli0210)->QTD_COMP := (cAli0210)->QTD_CONS / (cAli0210)->QTD_PROD
- (cAli0210)->(MsUnLock())
- EndIf
- (cAliK255)->(dbSkip())
- EndDo
- EndIf
- (cAliK250)->(dbSkip())
- EndDo
- RestArea(aArea)
- Return
- /*苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘?
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北?
- 北谀哪哪哪哪穆哪哪哪哪哪哪履哪哪穆哪哪哪哪哪哪哪哪哪哪哪履哪哪穆哪哪哪哪哪勘?
- 北矲un噮o ?GetAlmTerc 矨utor ?TOTVS S/A ?Data ?1/01/2015潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪聊哪哪牧哪哪哪哪哪哪哪哪哪哪哪聊哪哪牧哪哪哪哪哪幢?
- 北矰escri噮o ?Retorna os Armazens de Terceiros, caso o cliente utilize o 潮?
- 北? ?conceito do parametro MV_CONTERC. 潮?
- 北滥哪哪哪哪牧哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪俦?
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北?
- 哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌?/
- Static Function GetAlmTerc()
- Local cRet := "''"
- Local lConTerc := SuperGetMv("MV_CONTERC",.F.,.F.)
- Local cAlmTerc := GetMvNNR('MV_ALMTERC','80')
- If lConTerc .And. At("/",cAlmTerc) > 0
- cRet := "'" + SubStr(cAlmTerc,1,Len(cAlmTerc)-1) + "'"
- cRet := StrTran(cRet,"/","','")
- EndIf
- Return cRet
- /*苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘?
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北?
- 北谀哪哪哪哪穆哪哪哪哪哪哪履哪哪穆哪哪哪哪哪哪哪哪哪哪哪履哪哪穆哪哪哪哪哪勘?
- 北矲un噮o ?GetListPrd 矨utor ?TOTVS S/A ?Data ?9/08/2016潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪聊哪哪牧哪哪哪哪哪哪哪哪哪哪哪聊哪哪牧哪哪哪哪哪幢?
- 北矰escri噮o ?Retorna o arquivo de trabalho contendo a lista de produtos 潮?
- 北? ?com saldo inicial e se houve movimentacao no periodo. 潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪幢?
- 北砅arametros?cAliasTmp = Alias do arquivo de trabalho 潮?
- 北? ?dDataAte = Data do saldo 潮?
- 北? ?lTerc = Monta o arquivo de trabalho para terceiros 潮?
- 北滥哪哪哪哪牧哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪俦?
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北?
- 哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌?/
- Function GetListPrd(cAliasTmp,dDataAte,dDataDe,lTerc)
- Local cQuery := ""
- Local cArqTmp := ""
- Local aTam := {}
- Local aCampos := {}
- Local cAlmTerc := GetAlmTerc()
- Local cAliasTRB := GetNextAlias()
- Local lSldTesN3 := SuperGetMV("MV_SDTESN3",.F.,0) <> 0
- Local lAliasD3E := AliasInDic("D3E")
- Default lTerc := .F.
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
- //? OBSERVACAO IMPORTANTE!!! ?
- //?--------------------------------------------------------------------- ?
- //?A ordenacao dos registros nao pode ser alterada, pois ao processar o ?
- //?Reg. K200 espera-se que Produtos com N Armazens estejam sequenciais. ?
- //?Se a ordenacao for alterada o processamento do K200 ficara incorreto. ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
- //?Query dos produtos que foram movimentados entre dUlmes e dDataAte ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
- cQuery := "SELECT 'A' QRY,SB9.B9_FILIAL, ('S') STATS, SB9.B9_COD, SB9.B9_LOCAL, SB9.B9_DATA, SB9.B9_QINI, SB9.B9_VINI1 "
- If lAliasD3E
- cQuery += ",D3E.D3E_CLIENT ,D3E.D3E_LOJA "
- Else
- cQuery += ",' ' D3E_CLIENT ,' ' D3E_LOJA "
- EndIf
- cQuery += "FROM "+ RetSqlName("SB9") +" SB9 JOIN "+ RetSqlName("SB1") +" SB1 ON "
- cQuery += "SB1.B1_FILIAL = '"+ xFilial("SB1") +"' AND SB1.B1_COD = SB9.B9_COD AND SB1.D_E_L_E_T_ = ' ' "
- If lAliasD3E
- cQuery += "LEFT JOIN "+ RetSqlName("D3E") +" D3E "
- cQuery += "ON D3E.D3E_FILIAL = '"+ xFilial("D3E") +"' AND D3E.D3E_COD = SB1.B1_COD AND D3E.D_E_L_E_T_ = ' ' "
- cQuery += "LEFT JOIN "+ RetSqlName("SA1") +" SA1 "
- cQuery += "ON SA1.A1_FILIAL = '"+ xFilial("SA1") +"' AND SA1.A1_COD = D3E.D3E_CLIENT AND SA1.A1_LOJA = D3E.D3E_LOJA AND SA1.D_E_L_E_T_ = ' ' "
- EndIf
- If lCpoBZTP
- cQuery += "LEFT JOIN "+RetSqlName("SBZ")+" SBZ ON SBZ.BZ_FILIAL = '"+xFilial('SBZ')+"' AND SBZ.BZ_COD = SB1.B1_COD AND SBZ.D_E_L_E_T_ = ' ' "
- EndIf
- cQuery += "JOIN "+ RetSqlName("SB2") +" SB2 ON SB2.B2_FILIAL = '"+ xFilial("SB2") +"' AND "
- cQuery += "SB2.B2_COD = SB9.B9_COD AND SB2.B2_LOCAL = SB9.B9_LOCAL AND SB2.D_E_L_E_T_ = ' ' WHERE "
- // --- Where
- If lCpoBZTP
- cQuery += MatIsNull()+"(SBZ.BZ_TIPO,SB1.B1_TIPO) "
- Else
- cQuery += "SB1.B1_TIPO "
- EndIF
- cQuery += " IN ("+cTipo00+","+cTipo01+","+cTipo02+","+cTipo03+","+cTipo04+","+cTipo05+","+cTipo06+","+cTipo10+") AND "
- cQuery += "SB9.D_E_L_E_T_ = ' ' AND SB1.B1_FANTASM <> 'S' AND SB1.B1_CCCUSTO = ' ' AND SB1.B1_COD NOT LIKE 'MOD%' AND "
- cQuery += "SB9.B9_LOCAL NOT IN ("+ cAlmTerc +") AND SB9.B9_DATA = (SELECT MAX(SB9B.B9_DATA) B9_DATAMAX "
- cQuery += "FROM "+ RetSqlName("SB9") +" SB9B "
- cQuery += "WHERE SB9B.B9_FILIAL = '"+ xFilial("SB9") + "' AND SB9B.B9_DATA <> '"+SPACE(TamSX3("B9_DATA")[1])+"' AND SB9B.B9_DATA <= '"+ DtoS(dDataAte)+"' AND SB9B.B9_COD = SB1.B1_COD AND SB9B.B9_LOCAL = SB2.B2_LOCAL AND SB9B.D_E_L_E_T_ = ' ')"
- cQuery += "AND SB9.B9_FILIAL = '"+ xFilial("SB9") +"' AND "
- If lTerc
- // --- Exist SB6
- cQuery += "(EXISTS(SELECT 1 FROM "+ RetSqlName("SB6") +" SB6 , "+ RetSqlName("SF4") +" SF4 WHERE SB6.B6_FILIAL = '"+ xFilial("SB6") +"' AND "
- cQuery += "SB6.B6_PRODUTO = SB9.B9_COD AND SB6.B6_LOCAL = SB9.B9_LOCAL AND SB6.B6_PODER3 = 'R' AND "
- cQuery += "SB6.B6_EMISSAO <= '"+ DtoS(dDataAte)+"' AND SF4.F4_FILIAL = '"+ xFilial("SF4") +"' AND SF4.F4_CODIGO = SB6.B6_TES AND "
- If !lSldTesN3
- cQuery += "SF4.F4_ESTOQUE = 'S' AND "
- EndIf
- cQuery += "SF4.D_E_L_E_T_ = ' ' AND SB6.D_E_L_E_T_ = ' ')) "
- Else
- // --- Exist SD1
- cQuery += "(EXISTS (SELECT 1 FROM "+ RetSqlName("SD1") +" SD1, "+ RetSqlName("SF4") +" SF4 WHERE SD1.D1_FILIAL = '"+ xFilial("SD1") +"' AND "
- cQuery += "SD1.D1_COD = SB9.B9_COD AND SD1.D1_LOCAL = SB9.B9_LOCAL AND SD1.D1_DTDIGIT BETWEEN (SELECT MAX(SB9B.B9_DATA) B9_DATAMAX "
- cQuery += "FROM "+ RetSqlName("SB9") +" SB9B "
- cQuery += "WHERE SB9B.B9_FILIAL = '"+ xFilial("SB9") + "' AND SB9B.B9_DATA <> '"+SPACE(TamSX3("B9_DATA")[1])+"' AND SB9B.B9_DATA <= '"+ DtoS(dDataAte)+"' AND SB9B.B9_COD = SB1.B1_COD AND SB9B.B9_LOCAL = SB2.B2_LOCAL AND SB9B.D_E_L_E_T_ = ' ') AND '"+ DtoS(dDataAte) +"' AND "
- cQuery += "SD1.D1_ORIGLAN <> 'LF' AND SF4.F4_FILIAL = '"+ xFilial("SF4") +"' AND SF4.F4_CODIGO = SD1.D1_TES AND "
- cQuery += "(SF4.F4_ESTOQUE = 'S' "
- If lSldTesN3
- cQuery += "OR (SF4.F4_ESTOQUE = 'N' AND SF4.F4_PODER3 IN ('R','D')) "
- EndIf
- cQuery += ") AND "
- cQuery += "SF4.D_E_L_E_T_ = ' ' AND SD1.D_E_L_E_T_ = ' ' ) "
- // --- Exist SD2
- cQuery += "OR EXISTS (SELECT 1 FROM "+ RetSqlName("SD2") +" SD2, "+ RetSqlName("SF4") +" SF4 WHERE SD2.D2_FILIAL = '"+ xFilial("SD2") +"' AND "
- cQuery += "SD2.D2_COD = SB9.B9_COD AND SD2.D2_LOCAL = SB9.B9_LOCAL AND SD2.D2_EMISSAO BETWEEN (SELECT MAX(SB9B.B9_DATA) B9_DATAMAX "
- cQuery += "FROM "+ RetSqlName("SB9") +" SB9B "
- cQuery += "WHERE SB9B.B9_FILIAL = '"+ xFilial("SB9") + "' AND SB9B.B9_DATA <> '"+SPACE(TamSX3("B9_DATA")[1])+"' AND SB9B.B9_DATA <= '"+ DtoS(dDataAte)+"' AND SB9B.B9_COD = SB1.B1_COD AND SB9B.B9_LOCAL = SB2.B2_LOCAL AND SB9B.D_E_L_E_T_ = ' ')AND '"+ DtoS(dDataAte) +"' AND "
- cQuery += "SD2.D2_ORIGLAN <> 'LF' AND SF4.F4_FILIAL = '"+ xFilial("SF4") +"' AND SF4.F4_CODIGO = SD2.D2_TES AND "
- cQuery += "(SF4.F4_ESTOQUE = 'S' "
- If lSldTesN3
- cQuery += "OR (SF4.F4_ESTOQUE = 'N' AND SF4.F4_PODER3 IN ('R','D')) "
- EndIf
- cQuery += ") AND "
- cQuery += "SF4.D_E_L_E_T_ = ' ' AND SD2.D_E_L_E_T_ = ' ' ) "
- // --- Exist SD3
- cQuery += "OR EXISTS (SELECT 1 FROM "+ RetSqlName("SD3") +" SD3 WHERE SD3.D3_FILIAL = '"+ xFilial("SD3") +"' AND SD3.D3_COD = SB9.B9_COD AND "
- cQuery += "SD3.D3_LOCAL = SB9.B9_LOCAL AND SD3.D3_EMISSAO BETWEEN (SELECT MAX(SB9B.B9_DATA) B9_DATAMAX "
- cQuery += "FROM "+ RetSqlName("SB9") +" SB9B "
- cQuery += "WHERE SB9B.B9_FILIAL = '"+ xFilial("SB9") + "' AND SB9B.B9_DATA <> '"+SPACE(TamSX3("B9_DATA")[1])+"' AND SB9B.B9_DATA <= '"+ DtoS(dDataAte)+"' AND SB9B.B9_COD = SB1.B1_COD AND SB9B.B9_LOCAL = SB2.B2_LOCAL AND SB9B.D_E_L_E_T_ = ' ') AND '"+ DtoS(dDataAte) +"' "
- cQuery += "AND SD3.D3_ESTORNO = ' ' AND SD3.D_E_L_E_T_ = ' ' )) "
- EndIf
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
- //?Query dos produtos que NAO foram movimentados entre dUlmes e dDataAte ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
- cQuery += "UNION ALL SELECT 'B' QRY, SB9.B9_FILIAL, ('N') STATS, SB9.B9_COD, SB9.B9_LOCAL, SB9.B9_DATA, SB9.B9_QINI, SB9.B9_VINI1 "
- If lAliasD3E
- cQuery += ",D3E.D3E_CLIENT ,D3E.D3E_LOJA "
- Else
- cQuery += ",' ' D3E_CLIENT ,' ' D3E_LOJA "
- EndIf
- cQuery += "FROM "+ RetSqlName("SB9") +" SB9 "
- cQuery += "JOIN "+ RetSqlName("SB1") +" SB1 "
- cQuery += "ON SB1.B1_FILIAL = '"+ xFilial("SB1") +"' AND SB1.B1_COD = SB9.B9_COD AND SB1.D_E_L_E_T_ = ' ' "
- If lAliasD3E
- cQuery += "LEFT JOIN "+ RetSqlName("D3E") +" D3E "
- cQuery += "ON D3E.D3E_FILIAL = '"+ xFilial("D3E") +"' AND D3E.D3E_COD = SB1.B1_COD AND D3E.D_E_L_E_T_ = ' ' "
- cQuery += "LEFT JOIN "+ RetSqlName("SA1") +" SA1 "
- cQuery += "ON SA1.A1_FILIAL = '"+ xFilial("SA1") +"' AND SA1.A1_COD = D3E.D3E_CLIENT AND SA1.A1_LOJA = D3E.D3E_LOJA AND SA1.D_E_L_E_T_ = ' ' "
- EndIf
- If lCpoBZTP
- cQuery += "LEFT JOIN "+RetSqlName("SBZ")+" SBZ ON SBZ.BZ_FILIAL = '"+xFilial('SBZ')+"' AND SBZ.BZ_COD = SB1.B1_COD AND SBZ.D_E_L_E_T_ = ' ' "
- EndIf
- cQuery += "JOIN "+ RetSqlName("SB2") +" SB2 ON SB2.B2_FILIAL = '"+ xFilial("SB2") +"' AND "
- cQuery += "SB2.B2_COD = SB9.B9_COD AND SB2.B2_LOCAL = SB9.B9_LOCAL AND SB2.D_E_L_E_T_ = ' ' WHERE "
- // --- Where
- If lCpoBZTP
- cQuery += MatIsNull()+"(SBZ.BZ_TIPO,SB1.B1_TIPO) "
- Else
- cQuery += "SB1.B1_TIPO "
- EndIF
- cQuery += " IN ("+cTipo00+","+cTipo01+","+cTipo02+","+cTipo03+","+cTipo04+","+cTipo05+","+cTipo06+","+cTipo10+") AND "
- cQuery += "SB9.D_E_L_E_T_ = ' ' AND SB1.B1_FANTASM <> 'S' AND SB1.B1_CCCUSTO = ' ' AND SB1.B1_COD NOT LIKE 'MOD%' AND "
- cQuery += "SB9.B9_LOCAL NOT IN ("+ cAlmTerc +") AND SB9.B9_DATA = (SELECT MAX(SB9B.B9_DATA) B9_DATAMAX "
- cQuery += "FROM "+ RetSqlName("SB9") +" SB9B "
- cQuery += "WHERE SB9B.B9_FILIAL = '"+ xFilial("SB9") + "' AND SB9.B9_DATA <> '"+SPACE(TamSX3("B9_DATA")[1])+"' AND SB9B.B9_DATA <= '"+ DtoS(dDataAte)+"' AND SB9B.B9_COD = SB1.B1_COD AND SB9B.B9_LOCAL = SB2.B2_LOCAL AND SB9B.D_E_L_E_T_ = ' ')"
- cQuery += "AND SB9.B9_FILIAL = '"+ xFilial("SB9") +"' AND "
- If lTerc
- // --- Exist SB6
- cQuery += "(NOT EXISTS(SELECT 1 FROM "+ RetSqlName("SB6") +" SB6 , "+ RetSqlName("SF4") +" SF4 WHERE SB6.B6_FILIAL = '"+ xFilial("SB6") +"' AND "
- cQuery += "SB6.B6_PRODUTO = SB9.B9_COD AND SB6.B6_LOCAL = SB9.B9_LOCAL AND SB6.B6_PODER3 = 'R' AND "
- cQuery += "SB6.B6_EMISSAO <= '"+ DtoS(dDataAte) +"' AND SF4.F4_FILIAL = '"+ xFilial("SF4") +"' AND SF4.F4_CODIGO = SB6.B6_TES AND "
- If !lSldTesN3
- cQuery += "SF4.F4_ESTOQUE = 'S' AND "
- EndIf
- cQuery += "SF4.D_E_L_E_T_ = ' ' AND SB6.D_E_L_E_T_ = ' ')) "
- Else
- // --- Exist SD1
- cQuery += "(NOT EXISTS (SELECT 1 FROM "+ RetSqlName("SD1") +" SD1, "+ RetSqlName("SF4") +" SF4 WHERE SD1.D1_FILIAL = '"+ xFilial("SD1") +"' AND "
- cQuery += "SD1.D1_COD = SB9.B9_COD AND SD1.D1_LOCAL = SB9.B9_LOCAL AND SD1.D1_DTDIGIT BETWEEN (SELECT MAX(SB9B.B9_DATA) B9_DATAMAX "
- cQuery += "FROM "+ RetSqlName("SB9") +" SB9B "
- cQuery += "WHERE SB9B.B9_FILIAL = '"+ xFilial("SB9") + "' AND SB9B.B9_DATA <> '"+ Space(TamSX3("B9_DATA")[1]) +"' AND SB9B.B9_DATA <= '"+ DtoS(dDataAte)+"' AND SB9B.B9_COD = SB1.B1_COD AND SB9B.B9_LOCAL = SB2.B2_LOCAL AND SB9B.D_E_L_E_T_ = ' ') AND '"+ DtoS(dDataAte) +"' AND "
- cQuery += "SD1.D1_ORIGLAN <> 'LF' AND SF4.F4_FILIAL = '"+ xFilial("SF4") +"' AND SF4.F4_CODIGO = SD1.D1_TES AND "
- cQuery += "(SF4.F4_ESTOQUE = 'S' "
- If lSldTesN3
- cQuery += "OR (SF4.F4_ESTOQUE = 'N' AND SF4.F4_PODER3 IN ('R','D') ) "
- EndIf
- cQuery += ") AND "
- cQuery += "SF4.D_E_L_E_T_ = ' ' AND SD1.D_E_L_E_T_ = ' ' ) "
- // --- Exist SD2
- cQuery += "AND NOT EXISTS (SELECT 1 FROM "+ RetSqlName("SD2") +" SD2, "+ RetSqlName("SF4") +" SF4 WHERE SD2.D2_FILIAL = '"+ xFilial("SD2") +"' AND "
- cQuery += "SD2.D2_COD = SB9.B9_COD AND SD2.D2_LOCAL = SB9.B9_LOCAL AND SD2.D2_EMISSAO BETWEEN (SELECT MAX(SB9B.B9_DATA) B9_DATAMAX "
- cQuery += "FROM "+ RetSqlName("SB9") +" SB9B "
- cQuery += "WHERE SB9B.B9_FILIAL = '"+ xFilial("SB9") + "' AND SB9B.B9_DATA <> '"+ Space(TamSX3("B9_DATA")[1]) +"' AND SB9B.B9_DATA <= '"+ DtoS(dDataAte)+"' AND SB9B.B9_COD = SB1.B1_COD AND SB9B.B9_LOCAL = SB2.B2_LOCAL AND SB9B.D_E_L_E_T_ = ' ') AND '"+ DtoS(dDataAte) +"' AND "
- cQuery += "SD2.D2_ORIGLAN <> 'LF' AND SF4.F4_FILIAL = '"+ xFilial("SF4") +"' AND SF4.F4_CODIGO = SD2.D2_TES AND "
- cQuery += "(SF4.F4_ESTOQUE = 'S' "
- If lSldTesN3
- cQuery += "OR (SF4.F4_ESTOQUE = 'N' AND SF4.F4_PODER3 IN ('R','D') ) "
- EndIf
- cQuery += ") AND "
- cQuery += "SF4.D_E_L_E_T_ = ' ' AND SD2.D_E_L_E_T_ = ' ' ) "
- // --- Exist SD3
- cQuery += "AND NOT EXISTS (SELECT 1 FROM "+ RetSqlName("SD3") +" SD3 WHERE SD3.D3_FILIAL = '"+ xFilial("SD3") +"' AND SD3.D3_COD = SB9.B9_COD AND "
- cQuery += "SD3.D3_LOCAL = SB9.B9_LOCAL AND SD3.D3_EMISSAO BETWEEN (SELECT MAX(SB9B.B9_DATA) B9_DATAMAX "
- cQuery += "FROM "+ RetSqlName("SB9") +" SB9B "
- cQuery += "WHERE SB9B.B9_FILIAL = '"+ xFilial("SB9") + "' AND SB9B.B9_DATA <= '"+ DtoS(dDataAte)+"' AND SB9B.B9_COD = SB1.B1_COD AND SB9B.B9_LOCAL = SB2.B2_LOCAL AND SB9B.D_E_L_E_T_ = ' ')AND '"+ DtoS(dDataAte) +"' "
- cQuery += "AND SD3.D3_ESTORNO = ' ' AND SD3.D_E_L_E_T_ = ' ' )) "
- EndIf
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
- //?Query dos produtos incluidos via Saldo Inicial durante o periodo ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
- cQuery += "UNION ALL "
- cQuery += "SELECT 'C' QRY, SB9INI.B9_FILIAL,('S') STATS,SB9INI.B9_COD,SB9INI.B9_LOCAL,SB9INI.B9_DATA,SB9INI.B9_QINI,SB9INI.B9_VINI1 "
- If lAliasD3E
- cQuery += ",D3E.D3E_CLIENT ,D3E.D3E_LOJA "
- Else
- cQuery += ",' ' D3E_CLIENT ,' ' D3E_LOJA "
- EndIf
- cQuery += " FROM "+ RetSqlName("SB9") +" SB9INI "
- cQuery += "JOIN "+ RetSqlName("SB1") +" SB1 ON SB1.B1_FILIAL = '"+ xFilial("SB1") +"' "
- cQuery += " AND SB1.B1_COD = SB9INI.B9_COD "
- cQuery += " AND SB1.D_E_L_E_T_ = ' ' "
- If lAliasD3E
- cQuery += "LEFT JOIN "+ RetSqlName("D3E") +" D3E "
- cQuery += "ON D3E.D3E_FILIAL = '"+ xFilial("D3E") +"' AND D3E.D3E_COD = SB1.B1_COD AND D3E.D_E_L_E_T_ = ' ' "
- cQuery += "LEFT JOIN "+ RetSqlName("SA1") +" SA1 "
- cQuery += "ON SA1.A1_FILIAL = '"+ xFilial("SA1") +"' AND SA1.A1_COD = D3E.D3E_CLIENT AND SA1.A1_LOJA = D3E.D3E_LOJA AND SA1.D_E_L_E_T_ = ' ' "
- EndIf
- If lCpoBZTP
- cQuery += "LEFT JOIN "+RetSqlName("SBZ")+" SBZ ON SBZ.BZ_FILIAL = '"+xFilial('SBZ')+"' AND SBZ.BZ_COD = SB1.B1_COD AND SBZ.D_E_L_E_T_ = ' ' "
- EndIf
- cQuery += "WHERE SB9INI.B9_FILIAL = '"+ xFilial("SB9") +"' "
- cQuery += " AND SB9INI.B9_DATA <= '"+ DtoS(dDataAte) +"' "
- cQuery += " AND SB9INI.B9_LOCAL NOT IN ("+ cAlmTerc +") "
- cQuery += " AND SB9INI.D_E_L_E_T_ = ' ' "
- cQuery += " AND SB1.B1_COD NOT LIKE 'MOD%' "
- cQuery += " AND NOT EXISTS (SELECT 1 FROM "+ RetSqlName("SB9") +" SB9 WHERE SB9.B9_FILIAL = '"+xFilial('SB9')+"' "
- cQuery += " AND SB9.B9_COD = SB9INI.B9_COD "
- cQuery += " AND SB9.B9_LOCAL = SB9INI.B9_LOCAL "
- cQuery += " AND SB9.B9_DATA <> '"+ Space(TamSX3("B9_DATA")[1]) +"' AND SB9.B9_DATA <= '"+ DtoS(dDataAte) +"') "
- If lCpoBZTP
- cQuery += " AND " + MatIsNull()+"(SBZ.BZ_TIPO,SB1.B1_TIPO) "
- Else
- cQuery += " AND SB1.B1_TIPO "
- EndIF
- cQuery += " IN ("+cTipo00+","+cTipo01+","+cTipo02+","+cTipo03+","+cTipo04+","+cTipo05+","+cTipo06+","+cTipo10+") "
- cQuery += " AND SB1.B1_FANTASM <> 'S' "
- cQuery += " AND SB1.B1_CCCUSTO = ' ' "
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
- //?Query de produtos com saldo gerado no MATA103, tem SB2 mas nao tem SB9?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
- cQuery += "UNION ALL "
- cQuery += "SELECT 'D' QRY, SB2.B2_FILIAL,('S') STATS,SB2.B2_COD,SB2.B2_LOCAL,SB9.B9_DATA,SB9.B9_QINI,SB9.B9_VINI1 "
- If lAliasD3E
- cQuery += ",D3E.D3E_CLIENT ,D3E.D3E_LOJA "
- Else
- cQuery += ",' ' D3E_CLIENT ,' ' D3E_LOJA "
- EndIf
- cQuery += "FROM "+ RetSqlName("SB2") +" SB2 "
- cQuery += "JOIN "+ RetSqlName("SB1") +" SB1 ON SB1.B1_FILIAL = '"+ xFilial("SB1") +"' "
- cQuery += "AND SB1.B1_COD = SB2.B2_COD "
- cQuery += "AND SB1.D_E_L_E_T_ = ' ' "
- If lAliasD3E
- cQuery += "LEFT JOIN "+ RetSqlName("D3E") +" D3E "
- cQuery += "ON D3E.D3E_FILIAL = '"+ xFilial("D3E") +"' AND D3E.D3E_COD = SB1.B1_COD AND D3E.D_E_L_E_T_ = ' ' "
- cQuery += "LEFT JOIN "+ RetSqlName("SA1") +" SA1 "
- cQuery += "ON SA1.A1_FILIAL = '"+ xFilial("SA1") +"' AND SA1.A1_COD = D3E.D3E_CLIENT AND SA1.A1_LOJA = D3E.D3E_LOJA AND SA1.D_E_L_E_T_ = ' ' "
- EndIf
- cQuery += "LEFT JOIN "+ RetSqlName("SB9") +" SB9 ON SB9.B9_FILIAL = '"+ xFilial("SB9") +"' AND SB9.B9_COD = SB2.B2_COD AND "
- cQuery += "SB9.B9_LOCAL = SB2.B2_LOCAL AND SB9.B9_DATA <= '"+ DtoS(dDataAte) +"' AND SB9.D_E_L_E_T_ = ' ' "
- If lCpoBZTP
- cQuery += "LEFT JOIN "+RetSqlName("SBZ")+" SBZ ON SBZ.BZ_FILIAL = '"+xFilial('SBZ')+"' AND SBZ.BZ_COD = SB1.B1_COD AND SBZ.D_E_L_E_T_ = ' ' "
- EndIf
- cQuery += "WHERE SB2.B2_FILIAL = '"+ xFilial("SB2") +"' AND "
- If lCpoBZTP
- cQuery += MatIsNull()+"(SBZ.BZ_TIPO,SB1.B1_TIPO) "
- Else
- cQuery += "SB1.B1_TIPO "
- EndIF
- cQuery += " IN ("+cTipo00+","+cTipo01+","+cTipo02+","+cTipo03+","+cTipo04+","+cTipo05+","+cTipo06+","+cTipo10+") AND "
- cQuery += "SB2.D_E_L_E_T_ = ' ' AND SB1.B1_FANTASM <> 'S' AND SB1.B1_CCCUSTO = ' ' AND "
- cQuery += "SB1.B1_COD NOT LIKE 'MOD%' AND SB2.B2_LOCAL NOT IN ("+ cAlmTerc +") AND SB9.B9_DATA IS NULL "
- // --- Order
- cQuery += "ORDER BY 2,4,5"
- cQuery := ChangeQuery(cQuery)
- dbUseArea(.T.,"TOPCONN",TcGenQry(,,cQuery),cAliasTRB,.T.,.T.)
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
- //?Monta o Arquivo de Trabalho ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
- aTam := TamSX3("B9_FILIAL")
- Aadd(aCampos,{"B9_FILIAL",aTam[3],aTam[1],aTam[2]})
- Aadd(aCampos,{"STATS","C",1,0})
- aTam := TamSX3("B9_COD")
- Aadd(aCampos,{"B9_COD",aTam[3],aTam[1],aTam[2]})
- aTam := TamSX3("B9_LOCAL")
- Aadd(aCampos,{"B9_LOCAL",aTam[3],aTam[1],aTam[2]})
- aTam := TamSX3("B9_DATA")
- Aadd(aCampos,{"B9_DATA",aTam[3],aTam[1],aTam[2]})
- aTam := TamSX3("B9_QINI")
- Aadd(aCampos,{"B9_QINI",aTam[3],aTam[1],aTam[2]})
- If lAliasD3E
- aTam := TamSX3("D3E_CLIENT")
- Else
- aTam := TamSX3("A1_COD")
- EndIf
- Aadd(aCampos,{"D3E_CLIENT",aTam[3],aTam[1],aTam[2]})
- If lAliasD3E
- aTam := TamSX3("D3E_LOJA")
- Else
- aTam := TamSX3("A1_LOJA")
- EndIf
- Aadd(aCampos,{"D3E_LOJA",aTam[3],aTam[1],aTam[2]})
- cArqTmp := GetNextAlias()
- If TcCanOpen(cArqTmp)
- TcDelFile(cArqTmp)
- EndIf
- FwDbCreate(cArqTmp,aCampos,"TOPCONN",.T.)
- cAliasTmp := cArqTmp
- DbUseArea(.T.,"TOPCONN",cArqTmp,cAliasTmp,.T.)
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
- //?Grava o Arquivo de Trabalho com os dados da Query ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
- While !(cAliasTRB)->(Eof())
- RecLock(cAliasTmp,.T.)
- (cAliasTmp)->B9_FILIAL := (cAliasTRB)->B9_FILIAL
- (cAliasTmp)->STATS := (cAliasTRB)->STATS
- (cAliasTmp)->B9_COD := (cAliasTRB)->B9_COD
- (cAliasTmp)->B9_LOCAL := (cAliasTRB)->B9_LOCAL
- (cAliasTmp)->B9_DATA := StoD((cAliasTRB)->B9_DATA)
- (cAliasTmp)->B9_QINI := (cAliasTRB)->B9_QINI
- (cAliasTmp)->D3E_CLIENT := (cAliasTRB)->D3E_CLIENT
- (cAliasTmp)->D3E_LOJA := (cAliasTRB)->D3E_LOJA
- (cAliasTmp)->(MsUnLock())
- (cAliasTRB)->(DbSkip())
- EndDo
- (cAliasTRB)->(dbCloseArea())
- (cAliasTmp)->(dbGoTop())
- Return
- /*苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘?
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北?
- 北谀哪哪哪哪穆哪哪哪哪哪哪履哪哪穆哪哪哪哪哪哪哪哪哪哪哪履哪哪穆哪哪哪哪哪勘?
- 北矲un噮o ?CalcThread 矨utor ?TOTVS S/A ?Data ?0/08/2016潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪聊哪哪牧哪哪哪哪哪哪哪哪哪哪哪聊哪哪牧哪哪哪哪哪幢?
- 北矰escri噮o ?Calcula o Range de produtos de cada Thread que sera 潮?
- 北? ?processada. 潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪幢?
- 北砅arametros?cAliasTmp = Alias do arquivo de trabalho 潮?
- 北? ?nThreads = Numero de Threads 潮?
- 北滥哪哪哪哪牧哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪俦?
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北?
- 哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌?/
- Static Function CalcThread(cAliasTmp,nThreads)
- Local nNumRec := 0
- Local nTotRec := 0
- Local nX := 0
- Local nAuxIni := 1
- Local nAuxFim := 0
- Local cProd := ""
- Local aThrAux := {}
- Local aRet := {}
- nTotRec := (cAliasTmp)->(LastRec())
- nNumRec := Int(nTotRec / nThreads)
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Monta os Ranges ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- For nX := 1 to nThreads
- nAuxIni += nAuxFim
- nAuxFim += nNumRec
- Aadd(aThrAux,{nAuxIni,nAuxFim})
- Next nX
- If nThreads > 1
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Ajusta o RECNO da ultima Thread ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- If aThrAux[Len(aThrAux)][2] < nTotRec
- aThrAux[Len(aThrAux)][2] := nTotRec
- EndIf
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Ajusta o RECNO de cada Thread, pois Produtos com saldo ?
- //?em mais de um Armazem devem ser processados dentro de uma ?
- //?uma mesma Thread, caso contrario o resultado ficara errado ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- For nX := 1 to nThreads
- // Recno inicial da Thread
- If nX == 1
- nAuxIni := aThrAux[nX][1]
- Else
- nAuxIni := aThrAux[nX-1][2] + 1
- EndIf
- (cAliasTmp)->(dbGoto(aThrAux[nX][2]))
- While !(cAliasTmp)->(Eof())
- cProd := (cAliasTmp)->B9_COD
- // Recno final da Thread
- nAuxFim := (cAliasTmp)->(Recno())
- (cAliasTmp)->(dbSkip())
- If cProd <> (cAliasTmp)->B9_COD
- Exit
- EndIf
- EndDo
- // Adiciona aRet
- If nX == 1
- Aadd(aRet,{nAuxIni,nAuxFim})
- Else
- Aadd(aRet,{aRet[nx-1][2]+1,nAuxFim})
- EndIf
- // Verifica se o ultimo Recno da Thread e igual ao total de recnos
- If nAuxFim == nTotRec
- Exit
- EndIf
- Next nX
- If Len(aRet)<> nThreads
- nThreads:= Len(aRet)
- EndIf
- EndIf
- If nThreads < 2 .And. Len(aRet) == 0
- Aadd(aRet,{nAuxIni,nAuxFim})
- EndIf
- (cAliasTmp)->(dbGoTop())
- Return aRet
- /*苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘?
- | REGISTRO H010: INVENT罵IO. |
- \ Tratamento destinado a gera玢o de arquivo Bloco H010 /
- | Este registro deve ser informado para discriminar os itens existentes no estoque. |
- 哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌*/
- /*苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
- 北谀哪哪哪哪穆哪哪哪哪哪哪哪哪履哪哪哪履哪哪哪哪哪哪哪哪穆哪哪哪履哪哪哪哪目北
- 北矲un嘺o ?REGH010 ?Autor ?Materiais ?Data ?28/07/14 潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪哪哪聊哪哪哪聊哪哪哪哪哪哪哪哪牧哪哪哪聊哪哪哪哪拇北
- 北矰escricao ?Funcao responsavel pela gravacao do Registro H010 潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪拇北
- 北砅arametros?cAliasTRB = Alias do arquivo de trabalho do Bloco 潮?
- 北? ?dDataDe = Data Inicial da Apuracao 潮?
- 北? ?dDataAte = Data Final da Apuracao 潮?
- 北滥哪哪哪哪牧哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁北
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
- 哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌*/
- Function SPDBlocH(cAliBLH,dDataDe,dDataAte)
- BlocoH460(dDataAte,@cAliBLH)
- Return
- /*
- *苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
- 北谀哪哪哪哪穆哪哪哪哪哪哪哪哪履哪哪哪履哪哪哪哪哪哪哪哪穆哪哪哪履哪哪哪哪目北
- 北矲un嘺o ?BLHCriaTRB ?Autor ?Materiais ?Data ?28/07/14 潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪哪哪聊哪哪哪聊哪哪哪哪哪哪哪哪牧哪哪哪聊哪哪哪哪拇北
- 北矰escricao ?Criacao do arquivo temporario para retorno de informacoes. 潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪拇北
- 北砅arametros?cBloco = Nome do Bloco para geracao arquivo de trabalho 潮?
- 北? ?cAliasTRB = Nome do arquivo de trabalho 潮?
- 北滥哪哪哪哪牧哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁北
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
- 哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌?/
- Function BLHCriaTRB( nOpcx, xEmpAnt, xFilAnt, cBloco, cAliasTRB, lJob )
- Local lRet := .T.
- Local nX := 0
- Local aRet := {}
- Local aIndice := {}
- Local aLayout := {}
- Local cDirSPDK := GetSrvProfString("Startpath","")
- Default nOpcx := 1
- Default lJob := .F.
- Default xEmpAnt := ''
- Default xFilAnt := ''
- Default cBloco := ""
- Default cAliasTRB := ""
- If lJob
- RpcSetType( 3 )
- RpcSetEnv( xEmpAnt, xFilAnt )
- EndIf
- Do Case
- Case nOpcx == 1
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Posicoes: [1]Campos / [2]Indices ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- aLayout := BLHLayout(cBloco)
- If !ExistDir(cDirSPDK)
- MakeDir(cDirSPDK)
- EndIf
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Criacao do Arquivo de Trabalho ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- If !Empty(cBloco)
- FWdbCreate(cAliasTRB, aLayout[1], __cRdd, .T. )
- dbUseArea(.T., __cRdd, cAliasTRB, cAliasTRB, .T. )
- For nX := 1 to Len(aLayout[2])
- Aadd( aIndice, { ( cAliasTRB + Alltrim( STR( nX ) ) ), aLayout[ 2 ][ nX ] } )
- dbCreateIndex( ( cAliasTRB + Alltrim( STR( nX ) ) ), aLayout[ 2 ][ nX ] )
- Next nX
- dbSetOrder(1)
- EndIf
- aRet := { aIndice, cAliasTRB }
- Case nOpcx == 2
- If TcCanOpen( cAliasTRB )
- lRet := TcDelFile( cAliasTRB )
- EndIf
- aRet := { lRet }
- EndCase
- If lJob
- RpcClearEnv()
- EndIf
- Return aRet
- /*苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
- 北谀哪哪哪哪穆哪哪哪哪哪哪哪哪履哪哪哪履哪哪哪哪哪哪哪哪穆哪哪哪履哪哪哪哪目北
- 北矲un嘺o ?BLHLayout ?Autor ?Materiais ?Data ?28/07/14 潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪哪哪聊哪哪哪聊哪哪哪哪哪哪哪哪牧哪哪哪聊哪哪哪哪拇北
- 北矰escricao ?Funcao responsavel pela montagem do layout do bloco 潮?
- 北媚哪哪哪哪呐哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪拇北
- 北砅arametros?cBloco = Nome do bloco para geracao do Layout 潮?
- 北滥哪哪哪哪牧哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁北
- 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
- 哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌*/
- Static Function BLHLayout(cBloco)
- Local aCampos := {}
- Local aIndices := {}
- Local nTamFil := TamSX3("D1_FILIAL" )[1]
- Local nTamCod := TamSX3("B1_COD" )[1]
- Local nTamUNID := TamSX3("B1_UM" )[1]
- Local nTamCC := TamSX3("B1_CONTA" )[1]
- Local aTamPic := TamSX3("B1_PICM" )
- Local nTamOri := TamSX3("B1_ORIGEM" )[1]
- Local nTamClF := TamSX3("B1_CLASFIS")[1]
- // ------ Tamanhos conforme especificado no Guia EFD ------
- Local nTamReg := 4
- Local aTamQtd := {16,3}
- Local aTamVlr := {16,2}
- Local aTmVlUn := {16,6}
- // --------------------------------------------------------
- Default cBloco := ""
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //? *** ATENCAO!!! *** ?
- //?Antes de realizar alteracoes nos tamanhos dos campos para ?
- //?montagem dos arquivos de trabalho, verificar especificacao ?
- //?deles no Guia Pratico EFD no site do SPED Fiscal(Receita) ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- Do Case
- Case cBloco == "H010"
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Criacao do Arquivo de Trabalho - BLOCO H010 ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- aCampos := {}
- AADD(aCampos,{"FILIAL" ,"C",nTamFil ,0 })
- AADD(aCampos,{"REG" ,"C",nTamReg ,0 })
- AADD(aCampos,{"COD_ITEM" ,"C",nTamCod ,0 })
- AADD(aCampos,{"UNID" ,"C",nTamUNID ,0 })
- AADD(aCampos,{"QTD" ,"N",aTamQtd[1],aTamQtd[2] })
- AADD(aCampos,{"VL_UNIT" ,"N",aTmVlUn[1],aTmVlUn[2] })
- AADD(aCampos,{"VL_ITEM" ,"N",aTamVlr[1],aTamVlr[2] })
- AADD(aCampos,{"IND_PROP" ,"C",1 ,0 })
- AADD(aCampos,{"COD_PART" ,"C",60 ,0 })
- AADD(aCampos,{"COD_CTA" ,"C",nTamCC ,0 })
- AADD(aCampos,{"VL_ITEM_IR" ,"N",aTamVlr[1],aTamVlr[2] })
- AADD(aCampos,{"ALQ_PICM" ,"N",aTamPic[1],aTamPic[2] })
- AADD(aCampos,{"COD_ORIG" ,"C",nTamOri })
- AADD(aCampos,{"CL_CLASS" ,"C",nTamClF })
- // Indices
- AADD(aIndices,"FILIAL+COD_ITEM+IND_PROP+COD_PART")
- EndCase
- Return {aCampos,aIndices}
- //----------------------------------------------------------------------------------------------------------//
- // Ponto de entrada para geracao do Bloco H010 //
- //----------------------------------------------------------------------------------------------------------//
- Static Function BlocoH460(dDataAte,cAliBLH)
- Local nInd := 0
- Local aArea := GetArea()
- Local cCodPart := ""
- Local aRetJob := {}
- Local cMVARQPROD := SuperGetMV("MV_ARQPROD",.F.,"SB1")
- Local lCpoBZCT := SBZ->(ColumnPos("BZ_CONTA")) > 0
- Local lExistArq := .F.
- Local cARQTMP := "ARQTMP"
- Local cNameTable := ""
- Local cBloco := "H010"
- Local cAliasTRB := Upper( cBloco )+"_"+CriaTrab(,.F.)
- SaveInter()
- If !Empty(dDataAte)
- cNameTable := "H_"+DTOS(dDataAte)+STRTRAN(FWGrpCompany() ," " ,"_")+"_"+STRTRAN(cFilant ," " ,"_")
- lExistArq := TcCanOpen( cNameTable )
- EndIf
- If lExistArq
- aRetJob := StartJob( "BLHCriaTRB", GetEnvServer(), .T., 1, FwGrpCompany(), FwCodFil(), cBloco, cAliasTRB, .T. )
- cAliBLH := aRetJob[ 2 ]
- dbUseArea( .T., __cRdd, cAliasTRB, cAliBLH, .F., .F. )
- dbSelectArea( cAliBLH )
- For nInd := 1 To Len( aRetJob[ 1 ] )
- Set Index To ( aRetJob[ 1 ][ nInd ][ 1 ] )
- Next nInd
- ( cAliBLH )->( dbSetOrder( 1 ) )
- dbUseArea(.T. , __cRdd ,cNameTable ,cARQTMP ,.T.)
- dbSelectArea( cARQTMP )
- SB1->(dbSetOrder(1))
- If cMVARQPROD == "SBZ"
- SBZ->(dbSetOrder(1))
- EndIf
- dbSelectArea( cArqTMP )
- ( cArqTMP )->( dbGoTop() )
- While !(cArqTMP)->(EOF())
- If (cArqTMP)->SITUACAO $ "3 "
- (cArqTMP)->(dbSkip())
- Loop
- EndIf
- SB1->(MsSeek(xFilial("SB1")+(cArqTMP)->PRODUTO))
- If cMVARQPROD == "SBZ"
- SBZ->(MsSeek(xFilial("SBZ")+(cArqTMP)->PRODUTO))
- EndIf
- If !Empty((cArqTMP)->TPCF)
- cCodPart := Iif((cArqTMP)->TPCF == "C","SA1","SA2")+(cArqTMP)->(CLIFOR+LOJA)
- EndIf
- If (cArqTMP)->SITUACAO $ "1|2" .And. (cAliBLH)->(MsSeek((cArqTMP)->(FILIAL+PRODUTO)+"0"))
- RecLock( cAliBLH, .F. )
- ElseIf ((cArqTMP)->SITUACAO == "4" .And. (cAliBLH)->(MsSeek((cArqTMP)->(FILIAL+PRODUTO)+"2"+cCodPart))) ;
- .Or. ((cArqTMP)->SITUACAO == "5" .And. (cAliBLH)->(MsSeek((cArqTMP)->(FILIAL+PRODUTO)+"1"+cCodPart)))
- RecLock( cAliBLH, .F. )
- Else
- RecLock( cAliBLH, .T. )
- EndIf
- REG := "H010"
- CL_CLASS := IIF (cMVARQPROD == "SBZ" ,SBZ->BZ_CLASFIS,SB1->B1_CLASFIS)
- COD_CTA := IIF (cMVARQPROD == "SBZ" .And. lCpoBZCT ,SBZ->BZ_CONTA,SB1->B1_CONTA)
- COD_ITEM := (cArqTMP)->PRODUTO
- If !Empty((cArqTMP)->TPCF)
- COD_PART := cCodPart
- EndIf
- (cAliBLH)->FILIAL := (cArqTMP)->FILIAL
- IND_PROP := Iif((cArqTMP)->SITUACAO $ "1|2","0",Iif((cArqTMP)->SITUACAO == "5","1","2"))
- COD_ORIG := IIF (cMVARQPROD == "SBZ" ,SBZ->BZ_ORIGEM,SB1->B1_ORIGEM)
- ALQ_PICM := IIF (cMVARQPROD == "SBZ" ,SBZ->BZ_PICM,SB1->B1_PICM)
- QTD += (cArqTMP)->QUANTIDADE
- UNID := (cArqTMP)->UM
- VL_ITEM += (cArqTMP)->TOTAL
- VL_ITEM_IR += (cArqTMP)->TOTAL
- VL_UNIT := VL_ITEM / QTD
- ( cAliBLH )->( MsUnLock() )
- (cArqTMP)->(dbSkip())
- End
- (cArqTMP)->(dbCloseArea())
- EndIf
- RestInter()
- RestArea(aArea)
- Return .T.
- //-------------------------------------------------------------------
- /*/{Protheus.doc} BlkApgArq
- Fun鏰o de fecha os alias e dropa as tabelas temporarias criadas para o bloco K
- @author Andre Maximo
- @since 04/01/2018
- @version 1.0
- @Param arqTMP
- /*/
- //-------------------------------------------------------------------
- Function BlkApgArq()
- Local nX := 0
- //谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
- //?Fecha os Arquivos Temporarios ?
- //滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
- For nX := 1 To Len(aTmpRegK)
- If Empty(aTmpRegK[nX,2]) // se n鉶 tiver o nome da tabela ent鉶 foi criada via FWTemporaryTable
- aTmpRegK[nX,4]:Delete()
- FreeObj(aTmpRegK[nX,4])
- Else
- If Select(aTmpRegK[nX,1])>0
- (aTmpRegK[nX,1])->(DbCloseArea())
- EndIf
- If TcCanOpen( aTmpRegK[nX,2] )
- TcDelFile( aTmpRegK[nX,2] )
- EndIf
- aSize(aTmpRegK[nX,3],0)
- EndIf
- aSize(aTmpRegK[nX],0)
- Next nX
- aSize(aTmpRegK,0)
- Return
- //-------------------------------------------------------------------
- /*/{Protheus.doc} GetPerdMov
- Fun鏰o que retornar a quantidade apontada de perda no MATA685
- @author Andre Maximo
- @since 04/01/2018
- @version 1.0
- @Param arqTMP
- /*/
- //-------------------------------------------------------------------
- Function GetPerdMov(cOP,cCodComp,dDataDe,dDataAte)
- Local nQuant
- Local cFilialSBC := xFilial("SBC")
- Local cAliasTRB := Getnextalias()
- BeginSql Alias cAliasTRB
- SELECT ISNULL(SUM(BC_QUANT),0) BC_QUANT
- FROM %Table:SBC% SBC
- WHERE SBC.BC_FILIAL = %Exp:cFilialSBC% AND
- SBC.BC_PRODUTO = %Exp:cCodComp% AND
- SBC.BC_CODDEST = ' ' AND
- SBC.BC_NUMSEQ <> ' ' AND
- SBC.BC_OP = %Exp:cOP % AND
- SBC.BC_DATA BETWEEN %Exp: DtoS(dDataDe) % AND %Exp: DtoS(dDataAte)% AND
- SBC.%NotDel%
- EndSql
- nQuant:= (cAliasTRB)->BC_QUANT
- (cAliasTRB)->(dbCloseArea())
- Return(nQuant)
- //-------------------------------------------------------------------
- /*/{Protheus.doc} Fun玢o que retorna a vers鉶 do leiaute do bloco K
- @author Flavio Lopes Rasta
- @since 13/09/2018
- @version 1.0
- /*/
- //-------------------------------------------------------------------
- Function VerBlocoK(dDataDe)
- Local cVerRet := ""
- Do Case
- Case(Year(dDataDe)==2018)
- cVerRet := "012"
- Case(Year(dDataDe)>=2019)
- cVerRet := "013"
- EndCase
- Return cVerRet
- /*/{Protheus.doc} REGK300
- Geracao dos registros do K300, K301 e K302 referentes ao movimentos internos de
- requisicao e produ玢o de ordem de producao em terceiros, a qual a estrutura do
- prduto seja negativa ocorrido no periodo de apuracao do SPED FISCAL
- @author reynaldo
- @since 19/09/2018
- @version 1.0
- @return ${return}, ${return_description}
- @param cAliK300, characters, descricao
- @param cAliK301, characters, descricao
- @param cAliK302, characters, descricao
- @param dDataDe, date, descricao
- @param dDataAte, date, descricao
- @param lGerLogPro, logical, descricao
- @param lRePross, logical, descricao
- @type function
- /*/
- Static Function REGK300(cAliK300,cAliK301,cAliK302,dDataDe,dDataAte, lGerLogPro,lRePross)
- REGK302(cAliK302,cAliK301,cAliK300,dDataDe,dDataAte,lGerLogPro,lRePross)
- Return
- /*/{Protheus.doc} REGK301
- Geracao dos registros do K301 referentes ao movimentos internos de produ玢o de
- ordem de producao em terceiros, a qual a estrutura do produto seja negativa
- ocorrido no periodo de apuracao do SPED FISCAL
- @author reynaldo
- @since 19/09/2018
- @version 1.0
- @return ${return}, ${return_description}
- @param cAliK301, characters, descricao
- @param cAliK300, characters, descricao
- @param dDataDe, date, descricao
- @param dDataAte, date, descricao
- @param cEmissao, characters, descricao
- @param cProdPA, characters, descricao
- @param lGerLogPro, logical, descricao
- @param lRepross, logical, descricao
- @type function
- /*/
- Static Function REGK301(cAliK301,cAliK300,dDataDe,dDataAte,cEmissao,cProdPA,lGerLogPro,lRepross)
- Local cQuery := ""
- Local cAliasTMP := GetNextAlias()
- Local lK301 := .F.
- Default lGerLogPro := .T.
- Default lRepross := .T.
- cQuery := ""
- cQuery += "SELECT SUM(SD3.D3_QUANT) QUANT "
- cQuery += " ,SD3.D3_COD "
- cQuery += " ,SD3.D3_FILIAL "
- cQuery += " ,SD3.D3_EMISSAO "
- cQuery += "FROM "+RetSQLName("SD3")+" SD3 "
- cQuery += "JOIN "+RetSQLName("SB1")+" SB1 ON SB1.B1_FILIAL = '"+xFilial("SB1")+"' "
- cQuery += " AND SB1.B1_COD = SD3.D3_COD "
- cQuery += " AND SB1.B1_CCCUSTO = ' ' "
- cQuery += " AND SB1.D_E_L_E_T_ = ' ' "
- cQuery += " INNER JOIN "+RetSQLName("SC2")+" SC2 ON SC2.C2_NUM||SC2.C2_ITEM||SC2.C2_SEQUEN||SC2.C2_ITEMGRD = SD3.D3_OP "
- cQuery += " AND SC2.C2_FILIAL = '"+xFilial('SC2')+"' "
- cQuery += " AND SC2.C2_ITEM <> 'OS' "
- cQuery += " AND SC2.C2_TPPR IN ('E') "
- cQuery += " AND SC2.D_E_L_E_T_ = ' ' "
- cQuery += "WHERE SD3.D3_FILIAL = '"+xFilial("SD3")+"' "
- cQuery += " AND SD3.D3_ESTORNO = ' ' "
- cQuery += " AND SD3.D3_CF IN ( "
- cQuery += " 'PR0' "
- cQuery += " ,'PR1' "
- cQuery += " ) "
- cQuery += " AND SD3.D3_COD NOT LIKE 'MOD%' "
- cQuery += " AND SD3.D3_EMISSAO BETWEEN '"+DTOS(dDataDe)+"' "
- cQuery += " AND '"+DTOS(dDataAte)+"' "
- cQuery += " AND SD3.D3_EMISSAO = '"+cEmissao+"' "
- cQuery += " AND SD3.D3_COD = '"+cProdPA+"' "
- cQuery += " AND SD3.D_E_L_E_T_ = ' ' "
- If lCpoBZTP
- cQuery += " AND COALESCE(SBZ.BZ_TIPO,SB1.B1_TIPO) IN ( "
- Else
- cQuery += " AND SB1.B1_TIPO IN ( "
- EndIf
- cQuery += cTipo03+","+cTipo04
- cQuery += " ) "
- cQuery += "GROUP BY SD3.D3_FILIAL "
- cQuery += " ,SD3.D3_EMISSAO "
- cQuery += " ,SD3.D3_COD "
- cQuery += "HAVING SUM(D3_QUANT) > 0 "
- cQuery += "UNION ALL "
- cQuery += "SELECT SUM(SD3.D3_QUANT) QUANT "
- cQuery += " ,SD3.D3_COD "
- cQuery += " ,SD3.D3_FILIAL "
- cQuery += " ,SD3.D3_EMISSAO "
- cQuery += "FROM "+RetSQLName("SD3")+" SD3 "
- cQuery += "JOIN "+RetSQLName("SB1")+" SB1 ON SB1.B1_FILIAL = '"+xFilial("SB1")+"' "
- cQuery += " AND SB1.B1_COD = SD3.D3_COD "
- cQuery += " AND SB1.B1_FANTASM != 'S' "
- cQuery += " AND SB1.B1_CCCUSTO = ' ' "
- cQuery += " AND SB1.D_E_L_E_T_ = ' ' "
- cQuery += " INNER JOIN "+RetSQLName("SC2")+" SC2 ON SC2.C2_NUM||SC2.C2_ITEM||SC2.C2_SEQUEN||SC2.C2_ITEMGRD = SD3.D3_OP "
- cQuery += " AND SC2.C2_FILIAL = '"+xFilial('SC2')+"' "
- cQuery += " AND SC2.C2_PRODUTO = '"+cProdPA+"' "
- cQuery += "AND SC2.C2_ITEM <> 'OS' "
- cQuery += "AND SC2.C2_TPPR IN ('E') "
- cQuery += "AND SC2.D_E_L_E_T_ = ' ' "
- cQuery += "WHERE SD3.D3_FILIAL = '"+xFilial("SD3")+"' "
- cQuery += " AND SD3.D3_CF = 'DE1' "
- cQuery += " AND SD3.D3_ESTORNO = ' ' "
- cQuery += " AND SD3.D3_COD NOT LIKE 'MOD%' "
- cQuery += " AND SD3.D3_EMISSAO BETWEEN '"+DTOS(dDataDe)+"' "
- cQuery += " AND '"+DTOS(dDataAte)+"' "
- cQuery += " AND SD3.D3_EMISSAO = '"+cEmissao+"' "
- cQuery += " AND SD3.D_E_L_E_T_ = ' '"
- If lCpoBZTP
- cQuery += " AND COALESCE(SBZ.BZ_TIPO,SB1.B1_TIPO) IN ( "
- Else
- cQuery += " AND SB1.B1_TIPO IN ( "
- EndIf
- cQuery += " "+cTipo00+","+cTipo01+","+cTipo02+","+cTipo03+","+cTipo04+","+cTipo05+","+cTipo10+" "
- cQuery += " ) "
- cQuery += "GROUP BY SD3.D3_FILIAL "
- cQuery += " ,SD3.D3_EMISSAO "
- cQuery += " ,SD3.D3_COD "
- cQuery += "HAVING SUM(D3_QUANT) > 0 "
- cQuery := ChangeQuery(cQuery)
- dbUseArea(.T.,"TOPCONN",TcGenQry(,,cQuery),cAliasTmp,.T.,.T.)
- While !(cAliasTmp)->(Eof())
- Reclock(cAliK301,.T.)
- (cAliK301)->FILIAL := (cAliasTmp)->D3_FILIAL
- (cAliK301)->CHAVE := cEmissao+cProdPA
- (cAliK301)->REG := "K301"
- (cAliK301)->COD_ITEM := (cAliasTmp)->D3_COD
- (cAliK301)->QTD := (cAliasTmp)->QUANT
- (cAliK301)->(MsUnLock())
- nRegsto++
- lK301 := .T.
- If !((cAliK300)->(MsSeek((cAliasTmp)->D3_FILIAL+cEmissao)))
- Reclock(cAliK300,.T.)
- (cAliK300)->FILIAL := (cAliasTmp)->D3_FILIAL
- (cAliK300)->REG := "K300"
- (cAliK300)->DT_PROD := STOD((cAliasTmp)->D3_EMISSAO)
- (cAliK300)->CHAVE := cEmissao
- (cAliK300)->(MsUnLock())
- nRegsto++
- EndIf
- (cAliasTmp)->(dbSkip())
- EndDo
- Return lK301
- /*/{Protheus.doc} REGK302
- Geracao dos registros do K301 referentes ao movimentos internos de produ玢o de
- ordem de producao em terceiros, a qual a estrutura do produto seja negativa
- ocorrido no periodo de apuracao do SPED FISCAL
- @author reynaldo
- @since 19/09/2018
- @version 1.0
- @return ${return}, ${return_description}
- @param cAliK302, characters, descricao
- @param cAliK301, characters, descricao
- @param cAliK300, characters, descricao
- @param dDataDe, date, descricao
- @param dDataAte, date, descricao
- @param lGerLogPro, logical, descricao
- @param lRepross, logical, descricao
- @type function
- /*/
- Static Function REGK302(cAliK302,cAliK301,cAliK300,dDataDe,dDataAte,lGerLogPro,lRepross)
- Local cAliasTmp := GetNextAlias()
- Local cQuery := ""
- Local lRet := .F.
- Default lGerLogPro := .T.
- Default lRepross := .T.
- cQuery := ""
- cQuery += "SELECT SUM(CASE "
- cQuery += " WHEN SD3.D3_CF LIKE ('DE%') "
- cQuery += " THEN (SD3.D3_QUANT * - 1) "
- cQuery += " WHEN SD3.D3_CF LIKE ('RE%') "
- cQuery += " THEN (SD3.D3_QUANT) "
- cQuery += " ELSE 0 "
- cQuery += " END) QUANT "
- cQuery += " ,SD3.D3_COD "
- cQuery += " ,SD3.D3_EMISSAO "
- cQuery += " ,SC2.C2_PRODUTO "
- cQuery += " ,SD3.D3_FILIAL "
- cQuery += "FROM "+RetSqlName("SD3")+" SD3 "
- cQuery += "JOIN "+RetSqlName("SB1")+" SB1 ON SB1.B1_FILIAL = '"+xFilial('SB1')+"' "
- cQuery += " AND SB1.B1_COD = SD3.D3_COD "
- cQuery += " AND SB1.B1_CCCUSTO = ' ' "
- cQuery += " AND SB1.B1_COD NOT LIKE 'MOD%' "
- cQuery += " AND SB1.D_E_L_E_T_ = ' ' "
- If lCpoBZTP
- cQuery += "LEFT JOIN "+RetSqlName("SBZ")+" SBZ ON SBZ.BZ_FILIAL = '"+xFilial('SBZ')+"' "
- cQuery += "AND SBZ.BZ_COD = SB1.B1_COD "
- cQuery += "AND SBZ.D_E_L_E_T_ = ' ' "
- EndIf
- cQuery += "JOIN "+RetSqlName("SC2")+" SC2 ON SD3.D3_OP = SC2.C2_NUM||SC2.C2_ITEM||SC2.C2_SEQUEN||SC2.C2_ITEMGRD "
- cQuery += "AND SC2.C2_FILIAL = '"+xFilial('SC2')+"' "
- cQuery += "AND SC2.C2_ITEM <> 'OS' "
- cQuery += "AND SC2.C2_TPPR IN ('E') "
- cQuery += "AND SC2.D_E_L_E_T_ = ' ' "
- cQuery += "WHERE SD3.D3_FILIAL = '"+xFilial('SD3')+"' "
- cQuery += " AND SD3.D3_ESTORNO = ' ' "
- cQuery += " AND (SD3.D3_CF LIKE ('RE%') OR SD3.D3_CF LIKE ('DE%')) "
- cQuery += " AND SD3.D3_EMISSAO BETWEEN '"+DtoS(dDataDe)+"' AND '"+DtoS(dDataAte)+"' "
- cQuery += " AND SD3.D3_CF <> 'DE1' "
- cQuery += " AND SD3.D_E_L_E_T_ = ' ' "
- cQuery += " AND "
- If lCpoBZTP
- cQuery += MatIsNull()+"(SBZ.BZ_TIPO,SB1.B1_TIPO) "
- Else
- cQuery += "SB1.B1_TIPO "
- EndIf
- cQuery += " IN ("+cTipo00+","+cTipo01+","+cTipo02+","+cTipo03+","+cTipo04+","+cTipo05+","+cTipo10+") "
- cQuery += " AND EXISTS ( "
- cQuery += " SELECT 1 FROM "+RetSQLName("SG1")+" SG1 "
- cQuery += " JOIN "+RetSQLName("SB1")+" SB1COMP ON SB1COMP.B1_FILIAL = '"+xFilial("SB1")+"' "
- cQuery += " AND SB1COMP.B1_COD = SG1.G1_COMP "
- cQuery += " AND SB1COMP.B1_CCCUSTO = ' ' "
- cQuery += " AND SB1COMP.B1_COD NOT LIKE 'MOD%' "
- cQuery += " AND SB1COMP.D_E_L_E_T_ = ' ' "
- cQuery += " WHERE SG1.G1_FILIAL = '"+xFilial("SG1")+"' "
- cQuery += " AND SG1.G1_COD = SC2.C2_PRODUTO "
- cQuery += " AND SG1.G1_REVINI <= CASE WHEN SC2.C2_REVISAO = ' ' THEN SB1COMP.B1_REVATU ELSE SC2.C2_REVISAO END "
- cQuery += " AND SG1.G1_REVFIM >= CASE WHEN SC2.C2_REVISAO = ' ' THEN SB1COMP.B1_REVATU ELSE SC2.C2_REVISAO END "
- cQuery += " AND SG1.G1_QUANT < 0 "
- cQuery += " AND SG1.G1_INI <= '"+DTOS(dDataDe)+"' "
- cQuery += " AND SG1.G1_FIM >= '"+DTOS(dDataAte)+"' "
- cQuery += " AND SG1.D_E_L_E_T_ = ' ' "
- cQuery += " ) "
- cQuery += "GROUP BY SD3.D3_EMISSAO,SC2.C2_PRODUTO, SD3.D3_COD, SD3.D3_FILIAL "
- cQuery += "HAVING SUM(D3_QUANT) >0 "
- cQuery += "ORDER BY 4,3,2"
- cQuery := ChangeQuery(cQuery)
- dbUseArea(.T.,"TOPCONN",TcGenQry(,,cQuery),cAliasTmp,.T.,.T.)
- While !(cAliasTmp)->(Eof())
- If REGK301(cAliK301,cAliK300,dDataDe,dDataAte,(cAliasTmp)->D3_EMISSAO,(cAliasTmp)->C2_PRODUTO )
- Reclock(cAliK302,.T.)
- (cAliK302)->FILIAL := (cAliasTmp)->D3_FILIAL
- (cAliK302)->CHAVE := (cAliasTmp)->D3_EMISSAO+(cAliasTmp)->C2_PRODUTO
- (cAliK302)->REG := "K302"
- (cAliK302)->COD_ITEM := (cAliasTmp)->D3_COD
- (cAliK302)->QTD := (cAliasTmp)->QUANT
- (cAliK302)->(MsUnLock())
- nRegsto++
- EndIf
- (cAliasTmp)->(dbSkip())
- EndDo
- // atualiza os registros SD3 que foram processados no periodo
- If lGerLogPro
- BlkPro302(dDataDe,dDataAte)
- BlkPro301(dDataDe,dDataAte)
- EndIf
- //----------------------//
- // Grava Tabela de Hist //
- //----------------------//
- BlkGrvTab(cAliK300,"D3R",aTmpRegK[K300][4],dDataAte,lRepross)
- BlkGrvTab(cAliK301,"D3S",aTmpRegK[K301][4],dDataAte,lRepross)
- BlkGrvTab(cAliK302,"D3T",aTmpRegK[K302][4],dDataAte,lRepross)
- (cAliasTmp)->(dbCloseArea())
- Return lRet
- /*/{Protheus.doc} GetSldTerc
- Gera registros para o K200 referentes a produtos de terceiros ou em terceiros
- @author reynaldo
- @since 08/10/2018
- @version 1.0
- @return ${return}, ${return_description}
- @param cTipoTerc, characters, descricao
- @param dDataAte, date, descricao
- @param cCodProdDe, characters, descricao
- @param cCodProdAte, characters, descricao
- @param cAliK200, characters, descricao
- @param nSldTesN3, numeric, descricao
- @type function
- /*/
- Static Function GetSldTerc(cTipoTerc ,dDataAte ,cCodProdDe ,cCodProdAte ,cAliK200 ,nSldTesN3)
- Local cQuery := ""
- Local cSB9Filial:= xFilial("SB9")
- Local cAliTerc := GetNextAlias()
- Local cIND_EST := 0
- cQuery := QryTerc(cTipoTerc,dDataAte,nSldTesN3,cCodProdDe,cCodProdAte)
- dbUseArea(.T.,"TOPCONN",TcGenQry(,,cQuery),cAliTerc,.T.,.T.)
- While !(cAliTerc)->(Eof())
- // descontar do saldo proprio, o saldo DE Terceiro
- If (cAliK200)->(MsSeek(cSB9Filial+DTOS(dDataAte)+(cAliTerc)->(B6_PRODUTO)+"0"))
- If (cAliTerc)->F4_ESTOQUE == "S"
- If ((cAliK200)->QTD - (cAliTerc)->SALDO) <= 0
- Reclock(cAliK200,.F.)
- DbDelete()
- (cAliK200)->(MsUnLock())
- Else
- If !Empty((cAliTerc)->(B6_CLIFOR+B6_LOJA))
- Reclock(cAliK200,.F.)
- (cAliK200)->QTD -= (cAliTerc)->SALDO
- (cAliK200)->(MsUnLock())
- EndIf
- EndIf
- EndIf
- EndIf
- If cTipoTerc == "D"
- cIND_EST := "2"
- Else
- If cTipoTerc == "E"
- cIND_EST := "1"
- EndIf
- EndIf
- If !Empty((cAliTerc)->(B6_CLIFOR+B6_LOJA))
- If (cAliK200)->(MsSeek(cSB9Filial+DTOS(dDataAte)+(cAliTerc)->(B6_PRODUTO+cIND_EST+LEFT(PESSOA,3)+B6_CLIFOR+B6_LOJA)))
- If ((cAliK200)->QTD + (cAliTerc)->SALDO) <= 0
- Reclock(cAliK200,.F.)
- DbDelete()
- (cAliK200)->(MsUnLock())
- Else
- Reclock(cAliK200,.F.)
- (cAliK200)->QTD += (cAliTerc)->SALDO
- (cAliK200)->(MsUnLock())
- EndIf
- Else
- if (cAliTerc)->SALDO>0
- Reclock(cAliK200,.T.)
- (cAliK200)->FILIAL := cSB9Filial
- (cAliK200)->REG := "K200"
- (cAliK200)->DT_EST := dDataAte
- (cAliK200)->COD_ITEM := (cAliTerc)->B6_PRODUTO
- (cAliK200)->QTD := (cAliTerc)->SALDO
- (cAliK200)->IND_EST := cIND_EST
- (cAliK200)->COD_PART := (cAliTerc)->(LEFT(PESSOA,3)+B6_CLIFOR+B6_LOJA)
- (cAliK200)->(MsUnLock())
- EndIf
- EndIf
- EndIf
- (cAliTerc)->(dbSkip())
- EndDo
- (cAliTerc)->(dbCloseArea())
- Return
- /*/{Protheus.doc} QryTerc
- Montagem de query para selecionar os produtos que tem saldo em terceiro ou de terceiro
- @author reynaldo
- @since 04/10/2018
- @version 1.0
- @return ${return}, ${return_description}
- @param cTipoTerc, characters, descricao
- @param dDataAte, date, descricao
- @param nSldTesN3, numeric, descricao
- @param cCodProdDe, characters, descricao
- @param cCodProdAte, characters, descricao
- @type function
- /*/
- Static Function QryTerc(cTipoTerc,dDataAte,nSldTesN3,cCodProdDe,cCodProdAte)
- Local cQuery := ""
- Local lAliasD3E := AliasInDic("D3E")
- Local lAliasD3K := AliasInDic("D3K")
- cQuery := ""
- cQuery += "SELECT B6_PRODUTO "
- cQuery += " ,PESSOA "
- cQuery += " ,B6_CLIFOR "
- cQuery += " ,B6_LOJA "
- cQuery += " ,F4_ESTOQUE "
- cQuery += " ,CASE "
- cQuery += " WHEN SUM(REQUISICAO)<=0 "
- cQuery += "AND SUM(RETORNO)*-1>SUM(REQUISICAO)*-1 THEN SUM(REMESSA)+ SUM(RETORNO) "
- cQuery += "ELSE SUM(REMESSA)+ SUM(REQUISICAO) "
- cQuery += "END SALDO "
- cQuery += "FROM ( "
- // Seleciona os registros da SB6 que s鉶 remessa DE e EM terceiros
- cQuery += "SELECT B6_PRODUTO "
- cQuery += " ,( "
- cQuery += " CASE "
- cQuery += " WHEN B6_TPCF = 'C' "
- cQuery += " THEN 'SA1' "
- cQuery += " WHEN B6_TPCF = 'F' "
- cQuery += " THEN 'SA2' "
- cQuery += " END "
- cQuery += " ) PESSOA "
- cQuery += ",B6_CLIFOR "
- cQuery += ",B6_LOJA "
- If nSldTesN3 == 1
- cQuery += " ,'S' F4_ESTOQUE "
- Else
- cQuery += " ,F4_ESTOQUE "
- EndIf
- cQuery += ",B6_QUANT REMESSA "
- cQuery += ",0 RETORNO "
- cQuery += ",0 REQUISICAO "
- cQuery += "FROM "+RetSqlName("SB6")+" SB6 "
- cQuery += "INNER JOIN "+RetSqlName("SB1")+" SB1 ON SB1.B1_FILIAL = '"+xFilial("SB1")+"' "
- cQuery += "AND SB1.B1_COD = SB6.B6_PRODUTO "
- cQuery += "AND SB1.B1_COD NOT LIKE 'MOD%' "
- cQuery += "AND SB1.B1_CCCUSTO = ' ' "
- cQuery += "AND SB1.D_E_L_E_T_ = ' ' "
- If lCpoBZTP
- cQuery += "LEFT JOIN "+RetSqlName("SBZ")+" SBZ ON SBZ.BZ_FILIAL = '"+xFilial('SBZ')+"' AND SBZ.BZ_COD = SB1.B1_COD AND SBZ.D_E_L_E_T_ = ' ' "
- EndIf
- cQuery += "INNER JOIN "+RetSqlName("SF4")+" SF4 ON SF4.F4_FILIAL = '"+xFilial("SF4")+"' "
- cQuery += " AND SF4.F4_CODIGO = SB6.B6_TES "
- cQuery += " AND SF4.F4_PODER3 = 'R' "
- If nSldTesN3 == 0
- cQuery += " AND SF4.F4_ESTOQUE = 'S' "
- EndIf
- cQuery += " AND SF4.D_E_L_E_T_ = ' ' "
- cQuery += "WHERE SB6.B6_FILIAL = '"+xFilial("SB6")+"' "
- cQuery += " AND SB6.B6_PRODUTO BETWEEN '"+cCodProdDe+"' AND '"+cCodProdAte+"' "
- cQuery += " AND SB6.B6_TIPO = '"+cTipoTerc+"' "
- cQuery += " AND SB6.B6_DTDIGIT <= '"+dtos(dDataAte)+"' "
- cQuery += " AND SB6.D_E_L_E_T_ = ' ' AND "
- If lCpoBZTP
- cQuery += MatIsNull()+"(SBZ.BZ_TIPO,SB1.B1_TIPO) "
- Else
- cQuery += "SB1.B1_TIPO "
- EndIF
- cQuery += " IN ("+cTipo00+","+cTipo01+","+cTipo02+","+cTipo03+","+cTipo04+","+cTipo05+","+cTipo06+","+cTipo10+") "
- If lAliasD3E
- cQuery += "AND NOT EXISTS( "
- cQuery += "SELECT 1 FROM "+ RetSqlName("D3E") +" D3E "
- cQuery += "JOIN "+ RetSqlName("SA1") +" SA1 "
- cQuery += "ON SA1.A1_FILIAL = '"+ xFilial("SA1") +"' AND SA1.A1_COD = D3E.D3E_CLIENT AND SA1.A1_LOJA = D3E.D3E_LOJA AND SA1.D_E_L_E_T_ = ' ' "
- cQuery += "WHERE D3E.D3E_FILIAL = '"+ xFilial("D3E") +"' AND D3E.D3E_COD = SB6.B6_PRODUTO AND D3E.D_E_L_E_T_ = ' ' "
- cQuery += ") "
- EndIf
- cQuery += "UNION ALL "
- // Seleciona os registros da SB6 que s鉶 retorno de remessa DE e EM terceiros, desde que encontre a remessa de terceiro respectivo
- cQuery += "SELECT SB6.B6_PRODUTO "
- cQuery += " ,( "
- cQuery += " CASE "
- cQuery += " WHEN SB6REM.B6_TPCF = 'C' "
- cQuery += " THEN 'SA1' "
- cQuery += " WHEN SB6REM.B6_TPCF = 'F' "
- cQuery += " THEN 'SA2' "
- cQuery += " END "
- cQuery += " ) PESSOA "
- cQuery += " ,SB6REM.B6_CLIFOR "
- cQuery += " ,SB6REM.B6_LOJA "
- If nSldTesN3 == 1
- cQuery += " ,'S' F4_ESTOQUE "
- Else
- cQuery += " ,SF4REM.F4_ESTOQUE "
- EndIf
- cQuery += " ,0 "
- cQuery += " ,SB6.B6_QUANT * - 1 B6_QUANT "
- cQuery += " ,0 "
- cQuery += "FROM "+RetSqlName("SB6")+" SB6 "
- cQuery += "INNER JOIN "+RetSqlName("SB1")+" SB1 ON SB1.B1_FILIAL = '"+xFilial("SB1")+"' "
- cQuery += " AND SB1.B1_COD = SB6.B6_PRODUTO "
- cQuery += " AND SB1.B1_COD NOT LIKE 'MOD%' "
- cQuery += " AND SB1.B1_CCCUSTO = ' ' "
- cQuery += " AND SB1.D_E_L_E_T_ = ' ' "
- If lCpoBZTP
- cQuery += "LEFT JOIN "+RetSqlName("SBZ")+" SBZ ON SBZ.BZ_FILIAL = '"+xFilial('SBZ')+"' AND SBZ.BZ_COD = SB1.B1_COD AND SBZ.D_E_L_E_T_ = ' ' "
- EndIf
- cQuery += "LEFT JOIN "+RetSqlName("SB6")+" SB6REM ON SB6REM.B6_FILIAL = '"+xFilial("SB6")+"' "
- cQuery += " AND SB6REM.B6_IDENT = SB6.B6_IDENT "
- cQuery += " AND SB6REM.B6_TIPO = '"+cTipoTerc+"' "
- cQuery += " AND SB6REM.B6_PRODUTO = SB6.B6_PRODUTO "
- cQuery += " AND SB6REM.B6_DTDIGIT <= '"+dtos(dDataAte)+"' "
- cQuery += " AND SB6REM.D_E_L_E_T_ = ' ' "
- cQuery += "INNER JOIN "+RetSqlName("SF4")+" SF4REM ON SF4REM.F4_FILIAL = '"+xFilial("SF4")+"' "
- cQuery += " AND SF4REM.F4_CODIGO = SB6REM.B6_TES "
- cQuery += " AND SF4REM.F4_PODER3 = 'R' "
- If nSldTesN3 == 0
- cQuery += " AND SF4REM.F4_ESTOQUE = 'S' "
- EndIf
- cQuery += " AND SF4REM.D_E_L_E_T_ = ' ' "
- cQuery += "INNER JOIN "+RetSqlName("SF4")+" SF4 ON SF4.F4_FILIAL = '"+xFilial("SF4")+"' "
- cQuery += " AND SF4.F4_CODIGO = SB6.B6_TES "
- cQuery += " AND SF4.F4_PODER3 = 'D' "
- If nSldTesN3 == 0
- cQuery += " AND SF4.F4_ESTOQUE = 'S' "
- EndIf
- cQuery += " AND SF4.D_E_L_E_T_ = ' ' "
- cQuery += "WHERE SB6.B6_FILIAL = '"+xFilial("SB6")+"' "
- cQuery += " AND SB6.B6_PRODUTO BETWEEN '"+cCodProdDe+"' AND '"+cCodProdAte+"' "
- cQuery += " AND SB6.B6_TIPO = '"+cTipoTerc+"' "
- cQuery += " AND SB6.B6_DTDIGIT <= '"+dtos(dDataAte)+"' "
- cQuery += " AND SB6.D_E_L_E_T_ = ' ' AND "
- If lCpoBZTP
- cQuery += MatIsNull()+"(SBZ.BZ_TIPO,SB1.B1_TIPO) "
- Else
- cQuery += "SB1.B1_TIPO "
- EndIF
- cQuery += " IN ("+cTipo00+","+cTipo01+","+cTipo02+","+cTipo03+","+cTipo04+","+cTipo05+","+cTipo06+","+cTipo10+") "
- If lAliasD3E
- cQuery += "AND NOT EXISTS( "
- cQuery += "SELECT 1 FROM "+ RetSqlName("D3E") +" D3E "
- cQuery += "JOIN "+ RetSqlName("SA1") +" SA1 "
- cQuery += "ON SA1.A1_FILIAL = '"+ xFilial("SA1") +"' AND SA1.A1_COD = D3E.D3E_CLIENT AND SA1.A1_LOJA = D3E.D3E_LOJA AND SA1.D_E_L_E_T_ = ' ' "
- cQuery += "WHERE D3E.D3E_FILIAL = '"+ xFilial("D3E") +"' AND D3E.D3E_COD = SB6.B6_PRODUTO AND D3E.D_E_L_E_T_ = ' ' "
- cQuery += ") "
- EndIf
- cQuery += "UNION ALL "
- cQuery += "SELECT "
- cQuery += "SD3.D3_COD ,'SA1' "
- If lAliasD3K
- cQuery += ",D3K.D3K_CLIENT ,D3K.D3K_LOJA ,'S' ,0 ,0 ,D3K.D3K_QTDE*-1 "
- Else
- cQuery += ",' ' D3K_CLIENT ,' ' D3K_LOJA ,'S' ,0 ,0 ,0 "
- EndIf
- cQuery += "FROM "+RetSqlName("SD3")+" SD3 "
- If lAliasD3K
- cQuery += "JOIN "+RetSqlName("D3K")+" D3K ON D3K.D3K_FILIAL = '"+xFilial("D3K")+"' "
- cQuery += "AND D3K.D3K_NUMSEQ = SD3.D3_NUMSEQ "
- cQuery += "AND D3K.D3K_COD = SD3.D3_COD "
- cQuery += "AND D3K.D_E_L_E_T_ = ' ' "
- EndIf
- cQuery += "INNER JOIN "+RetSqlName("SB1")+" SB1 ON SB1.B1_FILIAL = '"+xFilial("SB1")+"' "
- cQuery += " AND SB1.B1_COD = SD3.D3_COD "
- cQuery += " AND SB1.B1_COD NOT LIKE 'MOD%' "
- cQuery += " AND SB1.B1_CCCUSTO = ' ' "
- cQuery += " AND SB1.D_E_L_E_T_ = ' ' "
- If lCpoBZTP
- cQuery += "LEFT JOIN "+RetSqlName("SBZ")+" SBZ ON SBZ.BZ_FILIAL = '"+xFilial('SBZ')+"' AND SBZ.BZ_COD = SB1.B1_COD AND SBZ.D_E_L_E_T_ = ' ' "
- EndIf
- cQuery += "WHERE "
- cQuery += "SD3.D3_FILIAL = '"+xFilial("SD3")+"' "
- cQuery += "AND SD3.D3_EMISSAO <= '"+dtos(dDataAte)+"' "
- cQuery += "AND SD3.D3_CF LIKE 'RE%' "
- cQuery += "AND SD3.D3_OP <> ' ' "
- cQuery += "AND SD3.D_E_L_E_T_ = ' ' AND "
- If lCpoBZTP
- cQuery += MatIsNull()+"(SBZ.BZ_TIPO,SB1.B1_TIPO) "
- Else
- cQuery += "SB1.B1_TIPO "
- EndIF
- cQuery += " IN ("+cTipo00+","+cTipo01+","+cTipo02+","+cTipo03+","+cTipo04+","+cTipo05+","+cTipo06+","+cTipo10+") "
- If lAliasD3E
- cQuery += "AND NOT EXISTS( "
- cQuery += "SELECT 1 FROM "+ RetSqlName("D3E") +" D3E "
- cQuery += "JOIN "+ RetSqlName("SA1") +" SA1 "
- cQuery += "ON SA1.A1_FILIAL = '"+ xFilial("SA1") +"' AND SA1.A1_COD = D3E.D3E_CLIENT AND SA1.A1_LOJA = D3E.D3E_LOJA AND SA1.D_E_L_E_T_ = ' ' "
- cQuery += "WHERE D3E.D3E_FILIAL = '"+ xFilial("D3E") +"' AND D3E.D3E_COD = SD3.D3_COD AND D3E.D_E_L_E_T_ = ' ' "
- cQuery += ") "
- EndIf
- If cTipoTerc == "D"
- cQuery += "UNION ALL "
- cQuery += "SELECT "
- cQuery += "SD3.D3_COD ,'SA1' "
- If lAliasD3K
- cQuery += ",D3K.D3K_CLIENT ,D3K.D3K_LOJA ,'S' ,0 ,0 ,D3K.D3K_QTDE "
- Else
- cQuery += ",' ' D3K_CLIENT ,' ' D3K_LOJA ,'S' ,0 ,0 ,0 "
- EndIf
- cQuery += "FROM "+RetSqlName("SD3")+" SD3 "
- cQuery += "INNER JOIN "+RetSqlName("SB1")+" SB1 ON SB1.B1_FILIAL = '"+xFilial("SB1")+"' "
- cQuery += " AND SB1.B1_COD = SD3.D3_COD "
- cQuery += " AND SB1.B1_COD NOT LIKE 'MOD%' "
- cQuery += " AND SB1.B1_CCCUSTO = ' ' "
- cQuery += " AND SB1.D_E_L_E_T_ = ' ' "
- cQuery += " AND SB1.D_E_L_E_T_ = ' ' "
- If lCpoBZTP
- cQuery += "LEFT JOIN "+RetSqlName("SBZ")+" SBZ ON SBZ.BZ_FILIAL = '"+xFilial('SBZ')+"' AND SBZ.BZ_COD = SB1.B1_COD AND SBZ.D_E_L_E_T_ = ' ' "
- EndIf
- If lAliasD3K
- cQuery += "JOIN "+RetSqlName("D3K")+" D3K ON D3K.D3K_FILIAL = '"+xFilial("D3K")+"' "
- cQuery += "AND D3K.D3K_NUMSEQ = SD3.D3_NUMSEQ "
- cQuery += "AND D3K.D3K_COD = SD3.D3_COD "
- cQuery += "AND D3K.D_E_L_E_T_ = ' ' "
- EndIf
- cQuery += "WHERE "
- cQuery += "SD3.D3_FILIAL = '"+xFilial("SD3")+"' "
- cQuery += "AND SD3.D3_EMISSAO <= '"+dtos(dDataAte)+"' "
- cQuery += "AND (SD3.D3_CF LIKE 'PR%' OR SD3.D3_CF LIKE 'DE%' ) "
- cQuery += "AND SD3.D3_OP <> ' ' "
- cQuery += "AND SD3.D_E_L_E_T_ = ' ' AND "
- If lCpoBZTP
- cQuery += MatIsNull()+"(SBZ.BZ_TIPO,SB1.B1_TIPO) "
- Else
- cQuery += "SB1.B1_TIPO "
- EndIf
- cQuery += " IN ("+cTipo00+","+cTipo01+","+cTipo02+","+cTipo03+","+cTipo04+","+cTipo05+","+cTipo06+","+cTipo10+") "
- If lAliasD3E
- cQuery += "AND NOT EXISTS( "
- cQuery += "SELECT 1 FROM "+ RetSqlName("D3E") +" D3E "
- cQuery += "JOIN "+ RetSqlName("SA1") +" SA1 "
- cQuery += "ON SA1.A1_FILIAL = '"+ xFilial("SA1") +"' AND SA1.A1_COD = D3E.D3E_CLIENT AND SA1.A1_LOJA = D3E.D3E_LOJA AND SA1.D_E_L_E_T_ = ' ' "
- cQuery += "WHERE D3E.D3E_FILIAL = '"+ xFilial("D3E") +"' AND D3E.D3E_COD = SD3.D3_COD AND D3E.D_E_L_E_T_ = ' ' "
- cQuery += ") "
- EndIf
- cQuery += "UNION ALL "
- cQuery += "SELECT "
- cQuery += "SD2.D2_COD ,'SA1' ,SD2.D2_CLIENTE ,SD2.D2_LOJA ,'S' ,0 ,0 ,SD2.D2_QUANT*-1 "
- cQuery += "FROM "+RetSqlName("SD2")+" SD2 "
- cQuery += "INNER JOIN "+RetSqlName("SB6")+" SB6 ON "
- cQuery += "SB6.B6_FILIAL = '"+xFilial("SB6")+"' "
- cQuery += "AND SB6.B6_DOC = SD2.D2_DOC "
- cQuery += "AND SB6.B6_SERIE = SD2.D2_SERIE "
- cQuery += "AND SB6.B6_CLIFOR = SD2.D2_CLIENTE "
- cQuery += "AND SB6.B6_LOJA = SD2.D2_LOJA "
- cQuery += "AND SB6.B6_TPCF = 'C' "
- cQuery += "AND SB6.B6_TIPO = 'D' "
- cQuery += "AND SB6.B6_PRODUTO <> SD2.D2_COD "
- cQuery += "AND SB6.B6_DTDIGIT <= '"+dtos(dDataAte)+"' "
- cQuery += "AND SB6.D_E_L_E_T_ = ' ' "
- cQuery += "INNER JOIN "+RetSqlName("SF4")+" SF4 ON "
- cQuery += "SF4.F4_FILIAL = '"+xFilial("SB6")+"' "
- cQuery += "AND SF4.F4_CODIGO = SB6.B6_TES "
- cQuery += "AND SF4.F4_PODER3 = 'D' "
- cQuery += "AND SF4.D_E_L_E_T_ = ' ' "
- cQuery += "INNER JOIN "+RetSqlName("SB1")+" SB1 ON SB1.B1_FILIAL = '"+xFilial("SB1")+"' "
- cQuery += " AND SB1.B1_COD = SD2.D2_COD "
- cQuery += " AND SB1.B1_COD NOT LIKE 'MOD%' "
- cQuery += " AND SB1.B1_CCCUSTO = ' ' "
- cQuery += " AND SB1.D_E_L_E_T_ = ' ' "
- If lCpoBZTP
- cQuery += "LEFT JOIN "+RetSqlName("SBZ")+" SBZ ON SBZ.BZ_FILIAL = '"+xFilial('SBZ')+"' AND SBZ.BZ_COD = SB1.B1_COD AND SBZ.D_E_L_E_T_ = ' ' "
- EndIf
- cQuery += "WHERE "
- cQuery += "SD2.D2_FILIAL = '"+xFilial("SB6")+"' "
- cQuery += "AND SD2.D2_EMISSAO <= '"+dtos(dDataAte)+"' "
- cQuery += "AND SD2.D_E_L_E_T_ = ' ' AND "
- If lCpoBZTP
- cQuery += MatIsNull()+"(SBZ.BZ_TIPO,SB1.B1_TIPO) "
- Else
- cQuery += "SB1.B1_TIPO "
- EndIf
- cQuery += " IN ("+cTipo00+","+cTipo01+","+cTipo02+","+cTipo03+","+cTipo04+","+cTipo05+","+cTipo06+","+cTipo10+") "
- EndIf
- cQuery += ") SaldoTerceiro "
- cQuery += " GROUP BY B6_PRODUTO, PESSOA ,F4_ESTOQUE, B6_CLIFOR ,B6_LOJA "
- cQuery += " ORDER BY 1 "
- cQuery := ChangeQuery(cQuery)
- Return cQuery
- /*/{Protheus.doc} BlkPRO21x
- Grava a data de apuracao do SPED FISCAL nos registros de movimentacoes internas
- referente a desmontagem utilizados na geracao dos registros K210/K215
- @Andr?Maximo
- @since 08/10/2018
- @version 1.0
- @return ${return}, ${return_description}
- @param dDataDe, date, descricao
- @param dDataAte, date, descricao
- @type function
- /*/
- Function BlkPRO21x(dDataDe,dDataAte)
- Local cQuery := " "
- Local cPeriodo := ""
- cPeriodo := Left(dtos(dDataAte),6)
- cQuery:= "UPDATE "+RetSQLName("SD3")+" "
- cQuery+= " SET D3_PERBLK = '"+cPeriodo+"'"
- cQuery+= " WHERE R_E_C_N_O_ IN (SELECT SD3.R_E_C_N_O_ "
- cQuery+= " FROM "+RetSQLName("SD3")+" SD3"
- cQuery+= " JOIN "+RetSQLName("SB1")+" SB1"
- cQuery+= " ON SB1.B1_FILIAL = '"+xFilial("SB1")+"'"
- cQuery+= " AND SB1.B1_COD = SD3.D3_COD"
- cQuery+= " AND SB1.B1_COD NOT LIKE 'MOD%'"
- cQuery+= " AND SB1.B1_CCCUSTO = ' '"
- cQuery+= " AND SB1.D_E_L_E_T_ = ' '"
- If lCpoBZTP
- cQuery += "LEFT JOIN "+RetSqlName("SBZ")+" SBZ "
- cQuery += "ON SBZ.BZ_FILIAL = '"+xFilial('SBZ')+"' "
- cQuery += " AND SBZ.BZ_COD = SB1.B1_COD "
- cQuery += " AND SBZ.D_E_L_E_T_ = ' ' "
- EndIf
- cQuery+= "WHERE SD3.D3_FILIAL = '"+xFilial("SD3")+"'"
- cQuery+= " AND SD3.D3_CF IN ( 'DE7', 'RE7' )"
- cQuery+= " AND SD3.D3_EMISSAO BETWEEN '"+DtoS(dDataDe)+"' AND '"+DtoS(dDataAte)+"'"
- cQuery+= " AND SD3.D_E_L_E_T_ = ' '"
- If lCpoBZTP
- cQuery += " AND "+MatIsNull()+"(SBZ.BZ_TIPO,SB1.B1_TIPO) "
- Else
- cQuery += " AND SB1.B1_TIPO "
- EndIf
- cQuery += " IN ("+cTipo00+","+cTipo01+","+cTipo02+","+cTipo03+","+cTipo04+","+cTipo05+","+cTipo10+")"
- cQuery += " )"
- MATExecQry(cQuery)
- Return
- /*/{Protheus.doc} BlkK220
- Grava a data de apuracao do SPED FISCAL nos registros de movimentacoes internas
- referente a transferencia de produtos utilizados na geracao dos registros K220
- @Andr?Maximo
- @since 08/10/2018
- @version 1.0
- @return ${return}, ${return_description}
- @param dDataDe, date, descricao
- @param dDataAte, date, descricao
- @type function
- /*/
- Function BlkK220(dDataDe,dDataAte)
- Local cQuery := " "
- Local cPeriodo := ""
- cPeriodo := Left(dtos(dDataAte),6)
- cQuery := ""
- cQuery += "UPDATE "+RetSQLName("SD3")+" "
- cQuery += "SET D3_PERBLK = '"+cPeriodo+"' "
- cQuery += "WHERE R_E_C_N_O_ IN(SELECT SD3ORI.R_E_C_N_O_ "
- cQuery += "FROM "+RetSQLName("SD3")+" SD3ORI "
- cQuery += "JOIN "+RetSqlName("SD3")+" SD3DES "
- cQuery += "ON SD3DES.D3_FILIAL = SD3ORI.D3_FILIAL "
- cQuery += "AND SD3DES.D3_NUMSEQ = SD3ORI.D3_NUMSEQ "
- cQuery += "AND SD3DES.D_E_L_E_T_ = ' ' "
- cQuery += "AND EXISTS( "
- cQuery += "SELECT 1 FROM "+RetSqlName("SB1")+" SB1DES "
- If lCpoBZTP
- cQuery += "LEFT JOIN "+RetSqlName("SBZ")+" SBZDES ON SBZDES.BZ_FILIAL = '"+xFilial('SBZ')+"' AND SBZDES.BZ_COD = SB1DES.B1_COD AND SBZORI.D_E_L_E_T_ = ' ' "
- EndIf
- cQuery += "WHERE SB1DES.B1_FILIAL = '"+xFilial('SB1')+"' "
- cQuery += "AND SB1DES.B1_COD = SD3DES.D3_COD "
- cQuery += "AND SB1DES.B1_COD NOT LIKE 'MOD%' "
- cQuery += "AND SB1DES.B1_CCCUSTO = ' ' "
- cQuery += "AND SB1DES.D_E_L_E_T_ = ' ' "
- cQuery += "AND "
- If lCpoBZTP
- cQuery += MatIsNull()+"(SBZDES.BZ_TIPO,SB1DES.B1_TIPO) "
- Else
- cQuery += "SB1DES.B1_TIPO "
- EndIf
- cQuery += " IN ("+cTipo00+","+cTipo01+","+cTipo02+","+cTipo03+","+cTipo04+","+cTipo05+","+cTipo10+")"
- cQuery += ") "
- cQuery += "WHERE SD3ORI.D3_FILIAL = '"+xFilial('SD3')+"' "
- cQuery += "AND SD3ORI.D3_COD <> SD3DES.D3_COD "
- cQuery += "AND ( ( SD3ORI.D3_CF = 'RE4' "
- cQuery += "AND SD3DES.D3_CF = 'DE4' ) "
- cQuery += "OR ( SD3ORI.D3_CF = 'DE4' "
- cQuery += "AND SD3DES.D3_CF = 'RE4' ) ) "
- cQuery += "AND SD3ORI.D3_EMISSAO BETWEEN '"+DtoS(dDataDe)+"' AND '"+DtoS(dDataAte)+"' "
- cQuery += "AND SD3ORI.D_E_L_E_T_ = ' ' "
- cQuery += "AND EXISTS( "
- cQuery += "SELECT 1 FROM "+RetSqlName("SB1")+" SB1ORI "
- If lCpoBZTP
- cQuery += "LEFT JOIN "+RetSqlName("SBZ")+" SBZORI ON SBZORI.BZ_FILIAL = '"+xFilial('SBZ')+"' AND SBZORI.BZ_COD = SB1ORI.B1_COD AND SBZORI.D_E_L_E_T_ = ' ' "
- EndIf
- cQuery += "WHERE SB1ORI.B1_FILIAL = '"+xFilial('SB1')+"' "
- cQuery += "AND SB1ORI.B1_COD = SD3ORI.D3_COD "
- cQuery += "AND SB1ORI.B1_COD NOT LIKE 'MOD%' "
- cQuery += "AND SB1ORI.B1_CCCUSTO = ' ' "
- cQuery += "AND SB1ORI.D_E_L_E_T_ = ' ' "
- cQuery += "AND "
- If lCpoBZTP
- cQuery += MatIsNull()+"(SBZORI.BZ_TIPO,SB1ORI.B1_TIPO) "
- Else
- cQuery += "SB1ORI.B1_TIPO "
- EndIf
- cQuery += " IN ("+cTipo00+","+cTipo01+","+cTipo02+","+cTipo03+","+cTipo04+","+cTipo05+","+cTipo10+")"
- cQuery += ")) "
- MATExecQry(cQuery)
- Return
- /*/{Protheus.doc} BlkPro250
- Grava a data de apuracao do SPED FISCAL nos registros de movimentacoes internas
- referente a producao de uma ordem de producao de terceiros utilizados na
- geracao dos registros K250
- @Andr?Maximo
- @since 08/10/2018
- @version 1.0
- @return ${return}, ${return_description}
- @param dDataDe, date, descricao
- @param dDataAte, date, descricao
- @type function
- /*/
- Function BlkPro250(dDataDe,dDataAte)
- Local cQuery := " "
- Local cPeriodo := ""
- cPeriodo := cPeriodo := Left(dtos(dDataAte),6)
- cQuery := "UPDATE "+RetSQLName("SD3")+" "
- cQuery += "SET D3_PERBLK = '"+cPeriodo+"' "
- cQuery += "WHERE R_E_C_N_O_ IN(SELECT SD3.R_E_C_N_O_ "
- cQuery += "FROM "+RetSQLName("SD3")+" SD3 "
- cQuery += "JOIN "+RetSqlName("SC2")+" SC2 ON SC2.C2_FILIAL = '"+xFilial('SC2')+"' "
- cQuery += "AND SD3.D3_OP = SC2.C2_NUM " + MatiConcat()+" SC2.C2_ITEM " + MatiConcat()+" SC2.C2_SEQUEN " + MatiConcat()+" SC2.C2_ITEMGRD "
- cQuery += "AND SC2.C2_PRODUTO = SD3.D3_COD "
- cQuery += "AND SC2.C2_ITEM <> 'OS' "
- cQuery += "AND SC2.C2_TPPR = 'E' "
- cQuery += " AND SC2.D_E_L_E_T_ = ' ' "
- cQuery += "WHERE SD3.D3_FILIAL = '"+xFilial('SD3')+"' "
- cQuery += "AND SD3.D3_OP <> ' ' "
- cQuery += "AND SD3.D3_CF IN ('PR0','PR1','ER0','ER1') "
- cQuery += "AND SD3.D3_COD NOT LIKE 'MOD%' "
- cQuery += "AND SD3.D3_EMISSAO BETWEEN '"+DtoS(dDataDe)+"' AND '"+DtoS(dDataAte)+"' "
- cQuery += "AND SD3.D_E_L_E_T_ = ' ' "
- cQuery += "AND EXISTS( "
- cQuery += "SELECT 1 FROM "+RetSqlName("SB1")+" SB1 "
- If lCpoBZTP
- cQuery += "LEFT JOIN "+RetSqlName("SBZ")+" SBZ ON SBZ.BZ_FILIAL = '"+xFilial('SBZ')+"' AND SBZ.BZ_COD = SB1.B1_COD AND SBZ.D_E_L_E_T_ = ' ' "
- EndIf
- cQuery += "WHERE SB1.B1_FILIAL = '"+xFilial('SB1')+"' "
- cQuery += "AND SB1.B1_COD = SD3.D3_COD "
- cQuery += "AND SB1.B1_COD NOT LIKE 'MOD%' "
- cQuery += "AND SB1.B1_CCCUSTO = ' ' "
- cQuery += "AND SB1.D_E_L_E_T_ = ' ' "
- cQuery += "AND "
- If lCpoBZTP
- cQuery += MatIsNull()+"(SBZ.BZ_TIPO,SB1.B1_TIPO) "
- Else
- cQuery += "SB1.B1_TIPO "
- EndIf
- cQuery += "IN ("+cTipo00+","+cTipo01+","+cTipo02+","+cTipo03+","+cTipo04+","+cTipo05+","+cTipo10+") "
- cQuery += ") "
- cQuery += "AND NOT EXISTS( "
- cQuery += "SELECT 1 FROM "+RetSqlName("SD4")+" SD4 "
- cQuery += "WHERE SD4.D4_FILIAL = '"+xFilial("SD4")+"' "
- cQuery += "AND SD4.D4_OP = SD3.D3_OP "
- cQuery += "AND SD4.D4_PRODUTO = SC2.C2_PRODUTO "
- cQuery += "AND SD4.D4_COD = SD3.D3_COD "
- cQuery += "AND SD4.D4_QTDEORI < 0 "
- cQuery += "AND SD4.D_E_L_E_T_ = ' ' "
- cQuery += "))"
- MATExecQry(cQuery)
- Return
- /*/{Protheus.doc} BlkPro255
- Grava a data de apuracao do SPED FISCAL nos registros de movimentacoes internas
- referente a requisicao de uma ordem de producao de terceiros utilizados na
- geracao dos registros K255
- @Andr?Maximo
- @since 08/10/2018
- @version 1.0
- @return ${return}, ${return_description}
- @param dDataDe, date, descricao
- @param dDataAte, date, descricao
- @type function
- /*/
- Function BlkPro255(dDataDe,dDataAte)
- Local cQuery := " "
- Local cPeriodo := ""
- cPeriodo := Left(dtos(dDataAte),6)
- cQuery := "UPDATE "+RetSQLName("SD3")+" "
- cQuery += "SET D3_PERBLK = '"+cPeriodo+"' "
- cQuery += "WHERE R_E_C_N_O_ IN(SELECT SD3.R_E_C_N_O_ "
- cQuery += "FROM "+RetSQLName("SD3")+" SD3 "
- cQuery += "JOIN "+RetSqlName("SC2")+" SC2 ON SC2.C2_FILIAL = '"+xFilial('SC2')+"' "
- cQuery += "AND SD3.D3_OP = SC2.C2_NUM " + MatiConcat()+" SC2.C2_ITEM " + MatiConcat()+" SC2.C2_SEQUEN " + MatiConcat()+" SC2.C2_ITEMGRD "
- cQuery += "AND SC2.C2_ITEM <> 'OS' "
- cQuery += "AND SC2.C2_TPPR = 'E' "
- cQuery += "AND SC2.D_E_L_E_T_ = ' ' "
- cQuery += "WHERE SD3.D3_FILIAL = '"+xFilial('SD3')+"' "
- cQuery += "AND (SD3.D3_CF LIKE ('RE%') OR SD3.D3_CF LIKE ('DE%')) "
- cQuery += "AND SD3.D3_EMISSAO BETWEEN '"+DtoS(dDataDe)+"' AND '"+DtoS(dDataAte)+"' "
- cQuery += "AND SD3.D_E_L_E_T_ = ' ' "
- cQuery += "AND EXISTS( "
- cQuery += "SELECT 1 FROM "+RetSqlName("SB1")+" SB1 "
- If lCpoBZTP
- cQuery += "LEFT JOIN "+RetSqlName("SBZ")+" SBZ ON SBZ.BZ_FILIAL = '"+xFilial('SBZ')+"' AND SBZ.BZ_COD = SB1.B1_COD AND SBZ.D_E_L_E_T_ = ' ' "
- EndIf
- cQuery += "WHERE SB1.B1_FILIAL = '"+xFilial('SB1')+"' "
- cQuery += "AND SB1.B1_COD = SD3.D3_COD "
- cQuery += "AND SB1.B1_COD NOT LIKE 'MOD%' "
- cQuery += "AND SB1.B1_CCCUSTO = ' ' "
- cQuery += "AND SB1.D_E_L_E_T_ = ' ' "
- cQuery += "AND "
- If lCpoBZTP
- cQuery += MatIsNull()+"(SBZ.BZ_TIPO,SB1.B1_TIPO) "
- Else
- cQuery += "SB1.B1_TIPO "
- EndIf
- cQuery += "IN ("+cTipo00+","+cTipo01+","+cTipo02+","+cTipo03+","+cTipo04+","+cTipo05+","+cTipo10+") "
- cQuery += ") "
- cQuery += "AND NOT EXISTS( "
- cQuery += "SELECT 1 FROM "+RetSqlName("SD4")+" SD4 "
- cQuery += "WHERE SD4.D4_FILIAL = '"+xFilial("SD4")+"' "
- cQuery += "AND SD4.D4_OP = SD3.D3_OP "
- cQuery += "AND SD4.D4_PRODUTO = SC2.C2_PRODUTO "
- cQuery += "AND SD4.D4_COD = SD3.D3_COD "
- cQuery += "AND SD4.D4_QTDEORI < 0 "
- cQuery += "AND SD4.D_E_L_E_T_ = ' ' "
- cQuery += "))"
- MATExecQry(cQuery)
- Return
- /*/{Protheus.doc} BlkPro302
- Grava a data de apuracao do SPED FISCAL nos registros de movimentacoes internas
- referente a requisicao de uma ordem de producao de terceiros com estrutura
- negativa utilizados na geracao dos registros K255
- @Andr?Maximo
- @since 08/10/2018
- @version 1.0
- @return ${return}, ${return_description}
- @param dDataDe, date, descricao
- @param dDataAte, date, descricao
- @type function
- /*/
- Function BlkPro302(dDataDe,dDataAte,cOP)
- Local cQuery := " "
- Local cData
- cData := Substr(dTOS(dDataAte),1,6)
- cQuery:= "UPDATE "+RetSQLName("SD3")+" "
- cQuery+= " SET D3_PERBLK = '"+cData+"'"
- cQuery+= " WHERE R_E_C_N_O_ IN(SELECT SD3.R_E_C_N_O_ "
- cQuery += "FROM "+RetSqlName("SD3")+" SD3 "
- cQuery += "JOIN "+RetSqlName("SB1")+" SB1 ON SB1.B1_FILIAL = '"+xFilial('SB1')+"' "
- cQuery += " AND SB1.B1_COD = SD3.D3_COD "
- cQuery += " AND SB1.B1_CCCUSTO = ' ' "
- cQuery += " AND SB1.B1_COD NOT LIKE 'MOD%' "
- cQuery += " AND SB1.D_E_L_E_T_ = ' ' "
- If lCpoBZTP
- cQuery += "LEFT JOIN "+RetSqlName("SBZ")+" SBZ ON SBZ.BZ_FILIAL = '"+xFilial('SBZ')+"' "
- cQuery += "AND SBZ.BZ_COD = SB1.B1_COD "
- cQuery += "AND SBZ.D_E_L_E_T_ = ' ' "
- EndIf
- cQuery += "JOIN "+RetSqlName("SC2")+" SC2 ON SD3.D3_OP = SC2.C2_NUM " + MatiConcat()+" SC2.C2_ITEM " + MatiConcat()+" SC2.C2_SEQUEN " + MatiConcat()+" SC2.C2_ITEMGRD "
- cQuery += "AND SC2.C2_FILIAL = '"+xFilial('SC2')+"' "
- cQuery += "AND SC2.C2_ITEM <> 'OS' "
- cQuery += "AND SC2.C2_TPPR IN ('E') "
- cQuery += "AND SC2.D_E_L_E_T_ = ' ' "
- cQuery += "WHERE SD3.D3_FILIAL = '"+xFilial('SD3')+"' "
- cQuery += " AND (SD3.D3_CF LIKE ('RE%') OR SD3.D3_CF LIKE ('DE%')) "
- cQuery += " AND SD3.D3_EMISSAO BETWEEN '"+DtoS(dDataDe)+"' AND '"+DtoS(dDataAte)+"' "
- cQuery += " AND SD3.D_E_L_E_T_ = ' ' "
- cQuery += " AND "
- If lCpoBZTP
- cQuery += MatIsNull()+"(SBZ.BZ_TIPO,SB1.B1_TIPO) "
- Else
- cQuery += "SB1.B1_TIPO "
- EndIf
- cQuery += " IN ("+cTipo00+","+cTipo01+","+cTipo02+","+cTipo03+","
- cQuery += cTipo04+","+cTipo05+","+cTipo10+") "
- cQuery += "AND EXISTS( "
- cQuery += "SELECT 1 "
- cQuery += "FROM "
- cQuery += RetSqlName("SD4")+" SD4 "
- cQuery += "WHERE SD4.D4_FILIAL = '"+xFilial("SD4")+"' "
- cQuery += "AND SD4.D4_OP = SD3.D3_OP "
- cQuery += "AND SD4.D4_PRODUTO = SC2.C2_PRODUTO "
- cQuery += "AND SD4.D4_QTDEORI < 0 "
- cQuery += "AND SD4.D_E_L_E_T_ = ' ' )"
- cQuery += "AND EXISTS( "
- cQuery += "SELECT 1 "
- cQuery += "FROM "
- cQuery += RetSqlName("SD4")+" SD4 "
- cQuery += "WHERE SD4.D4_FILIAL = '"+xFilial("SD4")+"' "
- cQuery += "AND SD4.D4_OP = SD3.D3_OP "
- cQuery += "AND SD4.D4_COD = SD3.D3_COD "
- cQuery += "AND SD4.D4_QTDEORI > 0 "
- cQuery += "AND SD4.D_E_L_E_T_ = ' ' )"
- cQuery += ") "
- MATExecQry(cQuery)
- Return
- /*/{Protheus.doc} BlkPro301
- Grava a data de apuracao do SPED FISCAL nos registros de movimentacoes internas
- referente a producao de uma ordem de producao de terceiros com estrutura
- negativa utilizados na geracao dos registros K255
- @Andr?Maximo
- @since 08/10/2018
- @version 1.0
- @return ${return}, ${return_description}
- @param dDataDe, date, descricao
- @param dDataAte, date, descricao
- @type function
- /*/
- Function BlkPro301(dDataDe,dDataAte)
- Local cQuery := " "
- Local cPeriodo := ""
- cPeriodo := Substr(dTOS(dDataAte),1,6)
- cQuery := ""
- cQuery += "UPDATE "+RetSQLName("SD3")+" "
- cQuery += "SET D3_PERBLK = '"+cPeriodo+"' "
- cQuery += "WHERE R_E_C_N_O_ IN(SELECT SD3.R_E_C_N_O_ "
- cQuery += "FROM "+RetSQLName("SD3")+" SD3 "
- cQuery += "JOIN "+RetSQLName("SB1")+" SB1 ON SB1.B1_FILIAL = '"+xFilial("SB1")+"' "
- cQuery += "AND SB1.B1_COD = SD3.D3_COD "
- cQuery += "AND SB1.B1_CCCUSTO = ' ' "
- cQuery += "AND SB1.D_E_L_E_T_ = ' ' "
- cQuery += "INNER JOIN "+RetSQLName("SC2")+" SC2 ON SC2.C2_NUM " + MatiConcat()+" SC2.C2_ITEM " + MatiConcat()+" SC2.C2_SEQUEN " + MatiConcat()+" SC2.C2_ITEMGRD = SD3.D3_OP "
- cQuery += "AND SC2.C2_FILIAL = '"+xFilial('SC2')+"' "
- cQuery += "AND SC2.C2_ITEM <> 'OS' "
- cQuery += "AND SC2.C2_TPPR = 'E' "
- cQuery += "AND SC2.D_E_L_E_T_ = ' ' "
- cQuery += "WHERE SD3.D3_FILIAL = '"+xFilial("SD3")+"' "
- cQuery += "AND SD3.D3_CF IN ( "
- cQuery += "'PR0','PR1' "
- cQuery += ",'ER0','ER1' ) "
- cQuery += "AND SD3.D3_COD NOT LIKE 'MOD%' "
- cQuery += "AND SD3.D3_EMISSAO BETWEEN '"+DTOS(dDataDe)+"' "
- cQuery += "AND '"+DTOS(dDataAte)+"' "
- cQuery += "AND SD3.D_E_L_E_T_ = ' ' "
- If lCpoBZTP
- cQuery += "AND COALESCE(SBZ.BZ_TIPO,SB1.B1_TIPO) "
- Else
- cQuery += "AND SB1.B1_TIPO "
- EndIf
- cQuery += "IN ( "+cTipo03+","+cTipo04
- cQuery += ") "
- cQuery += "UNION ALL "
- cQuery += "SELECT SD3.R_E_C_N_O_ "
- cQuery += "FROM "+RetSQLName("SD3")+" SD3 "
- cQuery += "JOIN "+RetSQLName("SB1")+" SB1 ON SB1.B1_FILIAL = '"+xFilial("SB1")+"' "
- cQuery += "AND SB1.B1_COD = SD3.D3_COD "
- cQuery += "AND SB1.B1_FANTASM != 'S' "
- cQuery += "AND SB1.B1_CCCUSTO = ' ' "
- cQuery += "AND SB1.D_E_L_E_T_ = ' ' "
- cQuery += "INNER JOIN "+RetSQLName("SC2")+" SC2 ON SC2.C2_NUM " + MatiConcat()+" SC2.C2_ITEM " + MatiConcat()+" SC2.C2_SEQUEN " + MatiConcat()+" SC2.C2_ITEMGRD = SD3.D3_OP "
- cQuery += "AND SC2.C2_FILIAL = '"+xFilial('SC2')+"' "
- cQuery += "AND SC2.C2_ITEM <> 'OS' "
- cQuery += "AND SC2.C2_TPPR = 'E' "
- cQuery += "AND SC2.D_E_L_E_T_ = ' ' "
- cQuery += "WHERE SD3.D3_FILIAL = '"+xFilial("SD3")+"' "
- cQuery += "AND SD3.D3_CF IN ('RE1','DE1') "
- cQuery += "AND SD3.D3_COD NOT LIKE 'MOD%' "
- cQuery += "AND SD3.D3_EMISSAO BETWEEN '"+DTOS(dDataDe)+"' "
- cQuery += "AND '"+DTOS(dDataAte)+"' "
- cQuery += "AND SD3.D_E_L_E_T_ = ' ' "
- If lCpoBZTP
- cQuery += "AND COALESCE(SBZ.BZ_TIPO,SB1.B1_TIPO) IN ( "
- Else
- cQuery += "AND SB1.B1_TIPO IN ( "
- EndIf
- cQuery += cTipo00+","+cTipo01+","+cTipo02+","+cTipo03+","+cTipo04+","+cTipo05+","+cTipo10+" "
- cQuery += ") "
- cQuery += "AND EXISTS( "
- cQuery += "SELECT 1 FROM "+RetSqlName("SD4")+" SD4 "
- cQuery += "WHERE SD4.D4_FILIAL = '"+xFilial("SD4")+"' "
- cQuery += "AND SD4.D4_OP = SD3.D3_OP "
- cQuery += "AND SD4.D4_PRODUTO = SC2.C2_PRODUTO "
- cQuery += "AND SD4.D4_COD = SD3.D3_COD "
- cQuery += "AND SD4.D4_QTDEORI < 0 "
- cQuery += "AND SD4.D_E_L_E_T_ = ' ' "
- cQuery += "))"
- MATExecQry(cQuery)
- Return
- /*/{Protheus.doc} BlkPrLimp
- Limpa o campo D3_PERBLK para permitir re-processar os registros de movimentacao interna
- @Andr?Maximo
- @since 08/10/2018
- @version 1.0
- @return ${return}, ${return_description}
- @param dDataDe, date, descricao
- @param dDataAte, date, descricao
- @type function
- /*/
- Function BlkPrLimp(dDataAte)
- Local cQuery := " "
- Local cPeriodo := ""
- cPeriodo := Left(dtos(dDataAte),6)
- cQuery:= "UPDATE "+RetSQLName("SD3")+" SET D3_PERBLK = '"+space(TamSX3("D3_PERBLK")[1])+"' WHERE D3_PERBLK = '"+cPeriodo+"' AND D3_FILIAL = '" +xFilial("SD3")+ "'"
- MATExecQry(cQuery)
- Return
- /*/{Protheus.doc} MatiConcat
- realizaajuste na concatena玢o na string da query de UPDATE
- @author andre.maximo
- @since 09/10/2018
- @version 1.0
- @return ${cFunConcat}, ${C骴igo para concatenar}
- /*/
- Function MatiConcat()
- Local cFunConcat := " "
- Local cDbType := TCGetDB()
- Do Case
- Case cDbType $ "DB2|POSTGRES|ORACLE|INFORMIX"
- cFunConcat := "||"
- Otherwise
- cFunConcat := "+"
- EndCase
- Return cFunConcat
- /*/{Protheus.doc} MatLimpD3K
- Limpa o campo D3_PERBLK, pois o registro que est?sendo estornado n鉶 pode ter
- o campo PREENCHIDO. J?que o mesmo s??preenchido quando ?gerado o SPED Fiscal
- @Andr?Maximo
- @since 24/10/2018
- @version 1.0
- @return ${return}, ${return_description}
- @param dDataDe, date, descricao
- @param dDataAte, date, descricao
- @type function
- /*/
- Function MatLimpD3K(cProduto,cNumSeq)
- Local AreaAtiv := GetArea()
- Default cProduto := ""
- Default cNumSeq := ""
- If SD3->(ColumnPos("D3_PERBLK")) >0
- RecLock("SD3",.F.)
- D3_PERBLK := space(TamSX3("D3_PERBLK")[1])
- msUnLock()
- EndIf
- /*If AliasInDic("D3K")
- DbSelectArea("D3K")
- DbSetOrder(1)
- cFilialD3K := xFilial("D3K")
- MsSeek(cFilialD3K+cNumSeq+cProduto)
- While D3K->(!Eof() .And. D3K->(D3K_FILIAL+D3K_NUMSEQ+D3K_COD) == cFilialD3K+cNumSeq+cProduto )
- RecLock("D3K",.F.)
- dbDelete()
- MsUnlock()
- D3K->(DbSkip())
- EndDo
- EndIf*/
- RestArea(AreaAtiv)
- Return
- /*/{Protheus.doc} MATExecQry
- Funcao generica para executar uma query de INSERT ou DELETE e caso seja gerado
- uma inconsistencia possa abortar o processo
- @author reynaldo
- @since 24/10/2018
- @version 1.0
- @return ${return}, ${return_description}
- @param cQuery, characters, descricao
- @type function
- /*/
- Function MATExecQry(cQuery)
- Local cMensErro := ""
- If (TcSqlExec(cQuery) < 0)
- cMensErro := TCSQLError() + " ocorrida fun玢o " +ProcName(-1)+ " na linha " +cValtoChar(ProcLine(-1))+ ". "
- UserException(cMensErro)
- EndIf
- Return
- // ---------------------------------------------------------------------------
- /*/{Protheus.doc} EstProsSPE
- realiza ajuste na concatena玢o na string da query de UPDATE
- @author andre.maximo
- @since 09/10/2018
- @version 1.0
- @return ${cFunConcat}, ${C骴igo para concatenar}
- /*/
- // ---------------------------------------------------------------------------
- Function EstProsSPE(dDataDe,dDataAte)
- Local cQuery := ""
- Local lRet := .T.
- Local cFilialSC2 := xfilial("SC2")
- Local cFilialSD3 := xfilial("SD3")
- Local cAliasTmp := GetNextAlias()
- cQuery:="SELECT 1 "
- cQuery+= "FROM "+RetSQLName("SD3")+" SD3 "
- cQuery+= "LEFT JOIN "+RetSQLName("SC2")+" SC2 "
- cQuery+= "ON SD3.D3_OP = SC2.C2_NUM + SC2.C2_ITEM + SC2.C2_SEQUEN+ SC2.C2_ITEMGRD "
- cQuery+= "AND SC2.C2_FILIAL ='"+cFilialSC2+"' "
- cQuery+= "AND SC2.D_E_L_E_T_ = ' ' "
- cQuery+= "LEFT JOIN "+RetSQLName("D3K")+" D3K "
- cQuery+= "ON D3K_FILIAL = '"+cFilialSD3+"' "
- cQuery+= "AND D3K.D3K_COD = SD3.D3_COD "
- cQuery+= "AND D3K.D3K_NUMSEQ = SD3.D3_NUMSEQ "
- cQuery+= "AND D3K.D3K_OP = SD3.D3_OP "
- cQuery+= "AND D3K.D_E_L_E_T_ =' ' "
- cQuery+="WHERE SD3.D3_FILIAL = '"+cFilialSD3+"' "
- cQuery+= "AND SD3.D_E_L_E_T_ = ' ' "
- cQuery+= "AND SD3.D3_ESTORNO = ' ' "
- cQuery+= "AND SD3.D3_OP <> ' ' "
- cQuery+= "AND SD3.D3_CF IN ( 'RE5','RE9','RE6','RE3','RE2','RE0','RE1','PR0','PR1') "
- cQuery+= "AND SD3.D3_EMISSAO BETWEEN '"+DtoS(dDataDe)+"' "
- cQuery+= "AND '"+DtoS(dDataAte)+"' "
- cQuery+= "AND SD3.D_E_L_E_T_ = ' ' "
- cQuery+= "AND SC2.C2_OPTERCE = '1' "
- cQuery+= "group by D3_COD, D3_OP,D3_NUMSEQ, D3_QUANT "
- cQuery+= "having COALESCE(SD3.D3_QUANT,-1) - SUM(COALESCE(D3K.D3K_QTDE,-1)) > 0 "
- cQuery := ChangeQuery(cQuery)
- dbUseArea(.T.,"TOPCONN",TcGenQry(,,cQuery),cAliasTmp,.T.,.T.)
- While !(cAliasTmp)->(Eof())
- lRet := .F.
- Exit
- EndDo
- (cAliasTmp)->(dbCloseArea())
- Return(lRet)
- /*/{Protheus.doc} BlkGrvTab
- Funcao generica para gravar os registros do bloco k processados nas tabelas de historico.
- @author andre.maximo
- @since 09/10/2018
- @version 1.0
- @return ${return}, ${return_description}
- @param cAliREG, characters, descricao
- @param cBlk, characters, descricao
- @param aTabBLK, array, descricao
- @param dDataAte, date, descricao
- @param lRepross, logical, descricao
- @param lJbK200, logical, descricao
- @type function
- /*/
- Function BlkGrvTab(cAliREG,cBlk,aTabBLK,dDataAte,lRepross,lJbK200)
- Local nY
- Local cQuery
- Local cQuerDel
- Local cTabConvert
- Local aTabTemp := {}
- Local aTabAlias := {}
- Default cAliREG := " "
- Default cBlk := " "
- Default aTabBLK := {}
- Default lRepross:= .F.
- Default dDataAte:= DTOS('')
- Default lJbK200 := .F.
- cData := Substr(dTOS(dDataAte),1,6)
- If lRepross
- aTabTemp := (cBlk)->(dbStruct())
- aTabAlias:= (cAliREG)->(dbStruct())
- cQuerDel := "DELETE FROM "+RetSqlName(cBlk)+" "
- cQuerDel += "WHERE "+ cBlk+"_FILIAL = '"+ xFilial(cBlk)+"' "
- cQuerDel += "AND "+ cBlk+"_PERBLK = '"+cData+"' "
- MATExecQry(cQuerDel)
- If !lJbK200
- cQuery := " INSERT INTO " + RetSQLName(cBlk)+" ( "
- For nY := 1 to Len(aTabAlias)
- If Len(aTabAlias[ny][1])>6
- cTabConvert := BlkConvTab(cBlk,aTabAlias[ny][1])
- cQuery += cBlk +"_" +cTabConvert+","
- Else
- cQuery += cBlk +"_" + LEFT(aTabAlias[ny][1],6)+","
- EndIf
- Next nY
- cQuery += cBlk +"_PERBLK"
- cQuery+=") "
- cQuery += "SELECT "
- For nY := 1 to Len(aTabAlias)
- cQuery += aTabAlias[ny][1]+","
- Next nY
- cQuery+= "'"+cData+"' "
- cQuery+="FROM " + aTabBLK:GetRealName()+ " "
- cQuery+="WHERE D_E_L_E_T_ = ' ' "
- MATExecQry(cQuery)
- EndIf
- EndIf
- Return
- //---------------------------------------------------------------
- /*/{Protheus.doc} BlkReg280
- grava registros processados nos registro K270/K275
- @author andre.maximo
- @since 29/10/2018
- @version 1.0
- @return ${cFunConcat}, ${C骴igo para concatenar}
- /*/
- Function BlkReg280(cFilK,cReg,dCorr,dApur,cProduto,nQuant,cCliente,cLoja,cAliK280)
- Local nMes := 0
- Local nX := 0
- Local cIND_EST := ""
- Local cCOD_PART := ""
- Local cChave := ""
- Local dCalc := ""
- Default cCliente := " "
- Default cLoja := " "
- nMes := DateDiffMonth(dCorr,dApur)
- For nX := 1 to nMes
- dCalc := MonthSub(dCorr,(nMes-Nx))
- cChave := cFilK+DTOS(dCalc)+cProduto
- If Empty(cCliente+cLoja)
- cIND_EST := "0"
- Else
- Do CASE
- case cReg =="K210" .Or. cReg =="K215"
- cIND_EST := "2"
- cCOD_PART:= "C:"+cCliente+"-"+cLoja
- case cReg =="K220"
- cIND_EST := "2"
- cCOD_PART:= "C:"+cCliente+"-"+cLoja
- case cReg =="K250" .Or. cReg =="K255"
- cIND_EST := "1"
- cCOD_PART:= "F:"+cCliente+"-"+cLoja
- case cReg =="K301" .Or. cReg =="K302"
- cIND_EST := "1"
- cCOD_PART:= "F:"+cCliente+"-"+cLoja
- endcase
- EndIf
- cChave += cIND_EST+cCOD_PART
- If (cAliK280)->(MsSeek(cChave))
- RecLock(cAliK280,.F.)
- If nQuant >0
- (cAliK280)->QTD_COR_P += nQuant
- Else
- (cAliK280)->QTD_COR_N += nQuant*-1
- EndIf
- Else
- Reclock(cAliK280,.T.)
- (cAliK280)->FILIAL := cFilK
- (cAliK280)->REG := "K280"
- (cAliK280)->DT_EST := dCalc
- (cAliK280)->COD_ITEM := cProduto
- If nQuant >0
- (cAliK280)->QTD_COR_P := nQuant
- Else
- (cAliK280)->QTD_COR_N := nQuant*-1
- EndIf
- (cAliK280)->IND_EST := cIND_EST
- (cAliK280)->COD_PART := cCOD_PART
- EndIf
- (cAliK280)->(MsUnLock())
- nRegsto++
- Next nX
- Return
- /*/{Protheus.doc} MatiSubStr
- Ajuste na concatena玢o na string da query
- @author andre.maximo
- @since 09/10/2018
- @version 1.0
- @return ${cFunConcat}, ${C骴igo para concatenar}
- /*/
- Function MatiSubStr()
- Local cFunConcat := " "
- Local cDbType := TCGetDB()
- Do Case
- Case cDbType $ "DB2|POSTGRES|ORACLE|INFORMIX"
- cFunConcat := "SUBSTR"
- Otherwise
- cFunConcat := "SUBSTRING"
- EndCase
- Return cFunConcat
- /*/{Protheus.doc} BlkConvTab
- @author andre.maximo
- @since 13/11/2018
- @version 1.0
- @return ${cFunConcat}, ${C骴igo para concatenar}
- /*/
- Function BlkConvTab(cBlk,cCpoBlk)
- Local cCampos:= ''
- Do Case
- Case cBlk == 'D3F'
- If cCpoBlk == 'COD_ITEM'
- cCampos := 'COD_IT'
- Elseif cCpoBlk == 'COD_I_COMP'
- cCampos := 'COD_CP'
- Elseif cCpoBlk == 'QTD_COMP'
- cCampos := 'QTD_CO'
- Elseif cCpoBlk == 'QTD_PROD'
- cCampos := 'QTD_PR'
- else //QTD_CON
- cCampos := 'QTD_CS'
- EndIf
- Case cBlk == 'D3G'
- If cCpoBlk == 'IND_MOV'
- cCampos := 'IND_MO'
- EndIf
- Case cBlk == 'D3H'
- If cCpoBlk == 'DT_INI
- cCampos := 'DT_INI'
- else
- cCampos := 'DT_FIN'
- EndIf
- Case cBlk == 'D3I'
- If cCpoBlk == 'DT_EST'
- cCampos := 'DT_EST'
- elseIf cCpoBlk == 'COD_ITEM'
- cCampos := 'COD_IT'
- elseIf cCpoBlk == 'IND_EST'
- cCampos := 'IND_ES'
- else // 'COD_PART'
- cCampos := 'COD_PA'
- EndIf
- Case cBlk == 'D3J'
- If cCpoBlk == 'DT_INI_OS'
- cCampos := 'DT_INI'
- ElseIf cCpoBlk == 'DT_FIN_OS'
- cCampos := 'DT_FIN'
- ElseIf cCpoBlk == 'COD_DOC_OS'
- cCampos := 'COD_DO'
- ElseIf cCpoBlk == 'COD_ITEM_O'
- cCampos := 'COD_IT'
- Else //QTD_ORI
- cCampos := 'QTD_OR'
- EndIf
- Case cBlk == 'D3L'
- If cCpoBlk == 'COD_DOC_OS'
- cCampos := 'COD_DO'
- ElseIf cCpoBlk == 'COD_ITEM_D'
- cCampos := 'COD_IT'
- Else //'QTD_DES'
- cCampos := 'QTD_DE'
- EndIf
- Case cBlk == 'D3M'
- If cCpoBlk == 'COD_ITEM_O'
- cCampos := 'COD_IO'
- ElseIf cCpoBlk == 'COD_ITEM_D'
- cCampos := 'COD_ID'
- ElseIf cCpoBlk == 'QTD_ORI'
- cCampos := 'QTD_OR'
- Else //'QTD_DEST'
- cCampos := 'QTD_DE'
- EndIf
- Case cBlk == 'D3N'
- If cCpoBlk == 'DT_PROD'
- cCampos := 'DT_PRO'
- Else//'COD_ITEM'
- cCampos := 'COD_IT'
- EndIf
- Case cBlk == 'D3O'
- If cCpoBlk == 'DT_CONS'
- cCampos := 'DT_CON'
- elseif cCpoBlk == 'COD_ITEM'
- cCampos := 'COD_IT'
- Else //COD_INS_SU
- cCampos := 'COD_IN'
- EndIf
- Case cBlk == 'D3P'
- If cCpoBlk == 'DT_EST'
- cCampos := 'DT_EST'
- ElseIf cCpoBlk == 'COD_ITEM'
- cCampos := 'COD_IT'
- ElseIf cCpoBlk == 'QTD_COR_P'
- cCampos := 'QTD_PO'
- ElseIf cCpoBlk == 'QTD_COR_N'
- cCampos := 'QTD_NE'
- ElseIf cCpoBlk == 'IND_EST
- cCampos := 'IND_ES'
- Else //COD_PART
- cCampos := 'COD_PA'
- EndIf
- Case cBlk == 'D3R'
- If cCpoBlk == 'DT_PROD'
- cCampos := 'DT_PRO'
- EndIf
- Case cBlk == 'D3S'
- If cCpoBlk == 'COD_ITEM'
- cCampos := 'COD_IT'
- EndIf
- Case cBlk == 'D3T'
- If cCpoBlk =='COD_ITEM'
- cCampos := 'COD_IT'
- EndIf
- Case cBlk == 'D3U'
- If cCpoBlk == 'QTD_LIN_K'
- cCampos := 'QTD_LI'
- EndIf
- EndCase
- return cCampos
- /*/{Protheus.doc} ChkUpd
- Fun玢o de verifica玢o do UPD
- @author Reynaldo
- @since 26/11/2018
- @version 1.0
- @return ${cFunConcat}, ${C骴igo para concatenar}
- /*/
- Static Function ChkUpd()
- Local aFields := {}
- Local cMensErro := ""
- Local cMsgLib := ""
- Local lVerClas := .F.
- Local aVerClas := GetSrcArray("FWSX3Util.*")
- If Len(aVerClas)
- lVerClas:= .T.
- EndIf
- cMsgLib:= cMensErro := ""
- cMsgLib+= cMensErro += Chr(10)
- cMsgLib+= cMensErro += "========================================================"+chr(10)
- cMsgLib+= cMensErro += "ATEN敲O!!! "+Chr(10)
- cMensErro += "Este ambiente est?com o dicion醨io de dados incompativel "+Chr(10)
- cMensErro += "com a vers鉶 dos fontes existentes no repositorio de dados, "+Chr(10)
- cMensErro += "este problema ocorre devido a n鉶 execu玢o do compatibilizador"+Chr(10)
- cMensErro += "do produto."+Chr(10)
- cMensErro += Chr(10)
- cMensErro += "Sera necess醨io executar o UPDDISTR com o 鷏timo arquivo "+Chr(10)
- cMensErro += "diferencial (SDFBRA) disponivel no portal do cliente."+Chr(10)
- cMensErro += Chr(10)
- cMensErro += "Siga as instru珲es do Link abaixo para realizar a atualiza玢o:"+Chr(10)
- cMensErro += "http://tdn.totvs.com/pages/viewpage.action?pageId=438279934"+Chr(10)
- cMensErro += "Ap髎 seguir os passos acima a gera玢o do bloco K atrav閟 do "+Chr(10)
- cMensErro += "MATR241 e/ou SPED FISCAL ser?liberado!!"+Chr(10)
- cMsgLib+= "Este ambiente est?com a LIB desatualizada, favor atualzar com,"+Chr(10)
- cMsgLib+= " a 鷏tima disponibilizada no portal do cliente. ,"+Chr(10)
- cMsgLib+= "========================================================"+chr(10)
- cMensErro +="========================================================"+chr(10)
- If lVerClas
- aFields := FWSX3Util():GetAllFields( "T4E" , .T. )
- If aScan(aFields,{|x|x=="T4E_SEMRET"})>0
- dbSelectArea("T4E")
- If T4E->(FieldPos("T4E_SEMRET"))==0
- UserException(cMensErro)
- EndIf
- Else
- UserException(cMensErro)
- EndIf
- cMensErro := ""
- Else
- UserException(cMsgLib)
- EndIf
- Return
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement