Árvore de páginas

Versões comparadas

Chave

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

...

Bloco de código
languagejava
themeMidnight
titleSPED1300
#include "rwmake.ch"
#include "Topconn.ch"
#include "protheus.ch"
   
  
User Function SPED1300 ()
  
Local cAlias    := (ParamIxb[1])
Local dDataDe   := (ParamIxb[2])
Local dDataAte  := (ParamIxb[3])
Local aReg0200  := (ParamIxb[4])
Local aReg0190  := (ParamIxb[5])    
Local aReg1300  := {}
Local aReg1310  := {}
Local aReg1320  := {}
 
//Função responsavel pela geração do bloco 1300, movimentação diaria de combustivel
nPos1300 := Reg1300P(cAlias,dDataDe,dDataAte,@aReg1300)
 
//Função MovCom, ela sera responsavel pela geração dos blocos 1310 e 1320, onde o registro 1310 é a movimentação diaria de combustivel por tanque
//Registro 1320 volume de venda 
MovCom(cAlias,dDataDe,dDataAte,nPos1300,aReg1300,@aReg1310,@aReg1320)
 
//Função Reg1350P, responsável por inserir informações das bombas e seus respectivos lacres e também dos bicos.    
//Esta função não deverá ser chamada em loop
Reg1350P(cAlias,dDataDe,dDataAte,@aReg0200,@aReg0190)
 

//Após a geração dos arrays com toda a movimentação do periodo será chamado a função SPEDRegs para adiciona-los corretamente no arquivo do SPED
//Esta função não deverá ser chamada em loop
SPEDRegs(cAlias,{aReg1300,aReg1310,aReg1320})
 

Return (aReg0200) 
 
 
////////// Registro 1300 MOVIMENTACAO DIARIA DE COMBUSTIVEIS    ////////////
Static Function Reg1300P(cAlias,dDataDe,dDataAte,aReg1300)            
 
 
Local lConcFil      := SuperGetMv("MV_COFLSPD",,.T.) //Soma filial ao codigo do produto
Local cProd         := PadR(Alltrim("001"+ Iif(lConcFil,xFilial("SB1"),"")),TamSX3("B1_COD")[1])
Local nPos          := 0
Local dData         := ctod("25/08/2022")
  
aAdd(aReg1300, {})
nPos:= Len(aReg1300)
aAdd (aReg1300[nPos], "1300"      )            //01 - REG
aAdd (aReg1300[nPos], cProd       )            //02 - COD_ITEM
aAdd (aReg1300[nPos], dData       )            //03 - DT_FECH
aAdd (aReg1300[nPos], {330.000,3} )            //04 - ESTQ_ABERT
aAdd (aReg1300[nPos], 0           )            //05 - VOL_ENTR
aAdd (aReg1300[nPos], {330.000,3} )            //00 - VOL_DISP
aAdd (aReg1300[nPos], {150.000,3} )            //00 - VOL_SAIDAS
aAdd (aReg1300[nPos], {180.000,3} )            //00 - ESTQ_ESCR
aAdd (aReg1300[nPos], 0           )            //00 - VAL_AJ_PERDA
aAdd (aReg1300[nPos], 0           )            //00 - VAL_AJ_GANHO
aAdd (aReg1300[nPos], {180.000,3} )            //00 - FECH_FISICO
  
Return (nPos)
  
Static Function MovCom(cAlias,dDataDe,dDataAte,nPos1300,aReg1300,aReg1310,aReg1320)
Local nRectan      := 0
Local nPos1310     := 0
Local nCont        := 0
Local ncontBic     := 0
 
Default aReg1310     := {}
Default aReg1320     := {}
 
For nCont := 1 To 3 // Simulando 3 tanques
       nRectan := 126 + nCont    
 
       
       nPos1310 := SPED1310(cAlias,dDataDe,dDataAte,nRectan,@aReg1310,nPos1300)     //1310 deverá ser gerado apenas um registro diario por tanque     
       For ncontBic := 1 To 2  // Simulando 2 Bicos
              SPED1320(cAlias,dDataDe,dDataAte,@aReg1320,nPos1310, ncontBic)        //1320 deverá ser gerado um registro diario por bico         
       Next       
Next  
 
 
Return()
   
//////////// Registro 1310 MOVIMENTACAO DIARIA DE COMBUSTIVEIS POR TANQUE/////////////////
Static Function SPED1310 (cAlias,dDataDe,dDataAte,nRectan,aReg1310,nPos1300)  
Local nPos     := 0
Local cTanque  := STRzero(nRectan,3)
  
aAdd(aReg1310, {})
  
nPos:= Len(aReg1310)
aAdd (aReg1310[nPos], nPos1300    )            //00 - RELACAO
aAdd (aReg1310[nPos], "1310"      )            //01 - REG
aAdd (aReg1310[nPos], cTanque     )            //02 - NUM_TANQUE
aAdd (aReg1310[nPos], {330.000,3} )            //03 - ESTQ_ABERT
aAdd (aReg1310[nPos], {0,3}       )            //04 - VOL_ENTR
aAdd (aReg1310[nPos], {330.000,3} )            //05 - VOL_DISP
aAdd (aReg1310[nPos], { 50.000,3} )            //06 - VOL_SAIDAS
aAdd (aReg1310[nPos], {280.000,3} )            //07 - ESTQ_ESCR
aAdd (aReg1310[nPos], 0           )            //08 - VAL_AJ_PERDA
aAdd (aReg1310[nPos], 0           )            //09 - VAL_AJ_GANHO
aAdd (aReg1310[nPos], {280.000,3} )            //10 - FECH_FISICO
  
 
  
Return (nPos)  
  
 
 
///////////////// Registro 1320 VOLUME DE VENDAS/////////////////
Static Function SPED1320 (cAlias,dDataDe,dDataAte,aReg1320,nPos1310,ncontBic)   
Local nPos   := 0
Local nBico  := 0
Local nInve  := 0 

aAdd(aReg1320, {})
 
nBico  := 123 + ncontBic
  
nPos:= Len(aReg1320)
aAdd (aReg1320[nPos], nPos1310                        )            //00 - RELACAO
aAdd (aReg1320[nPos], "1320"                          )            //01 - REG
aAdd (aReg1320[nPos], StrZero(nBico,3)                )            //02 - NUM_BICO
aAdd (aReg1320[nPos], "192"                           )            //03 - NR_INTERV
aAdd (aReg1320[nPos], "mo intervencao"                )            //04 - MOT_INTERV
aAdd (aReg1320[nPos], "Nom do Interventor"            )            //05 - NOM_INTERV
aAdd (aReg1320[nPos], "79427589000320"                )            //06 - CNPJ_INTERV
aAdd (aReg1320[nPos], "45723220667"                   )            //07 - CPF_INTERV
aAdd (aReg1320[nPos], 100                             )            //08 - VAL_FECHA
aAdd (aReg1320[nPos], 20                              )            //09 - VAL_ABERT
aAdd (aReg1320[nPos], 10                              )            //10 - VOL_AFERI
aAdd (aReg1320[nPos], "70"                            )            //11 - VOL_VENDAS
  
 
  
Return (aReg1320)
   
///////////////// Registro 1350 Bombas | Registro 1360 Lacres das bombas | Registro 1370 Bicos da bomba /////////////////
Static Function Reg1350P(cAlias,dDataDe,dDataAte,aReg0200,aReg0190)
Local lConcFil  := SuperGetMv("MV_COFLSPD",,.T.) //Soma filial ao codigo do produto
Local cProd     := PadR(Alltrim("001"+ Iif(lConcFil,xFilial("SB1"),"")),TamSX3("B1_COD")[1])
Local aReg1350  := {}
Local aReg1360  := {}
Local aReg1370  := {}
Local nPos      := 0
  
//------------------------------- 1
  
aAdd(aReg1350, {})
nPos:= Len(aReg1350)
aAdd (aReg1350[nPos], "1350"                   )            //01 - REG
aAdd (aReg1350[nPos], "01"                     )            //02 - SERIE
aAdd (aReg1350[nPos], "nome fabricante 1"      )           //03 - FABRICANTE
aAdd (aReg1350[nPos], "mod bomba 1"            )            //04 - MODELO
aAdd (aReg1350[nPos], "0"                      )            //04 - TIPO_MEDICAO
  
aAdd(aReg1360, {})
nPos:= Len(aReg1360)
aAdd (aReg1360[nPos], "1360"      )            //01 - REG
aAdd (aReg1360[nPos], "01"        )            //02 - NUM_LACRE
aAdd (aReg1360[nPos], dDataAte    )            //03 - DT_APLICACAO
  
aAdd(aReg1360, {})
nPos:= Len(aReg1360)
aAdd (aReg1360[nPos], "1360"      )            //01 - REG
aAdd (aReg1360[nPos], "011"       )            //02 - NUM_LACRE
aAdd (aReg1360[nPos], dDataAte    )            //03 - DT_APLICACAO
  
aAdd(aReg1370, {})
nPos:= Len(aReg1370)
aAdd (aReg1370[nPos], "1370"      )            //01 - REG
aAdd (aReg1370[nPos], "01"        )            //02 - NUM_BICO
aAdd (aReg1370[nPos], cProd       )            //03 - COD_ITEM
aAdd (aReg1370[nPos], "10"        )
  
//geracao do 0200
SPEDSeek("SB1",,xFilial("SB1")+cProd)
SFRG0200(cAlias,@aReg0200,@aReg0190,dDataDe,dDataAte,,cProd)
  
GrvRegTrS (cAlias,1,aReg1350)
GrvRegTrS (cAlias,1,aReg1360)
GrvRegTrS (cAlias,1,aReg1370)
  
//-------------------------------------------- 2
  
aReg1350     := {}
aReg1360     := {}
aReg1370     := {}
  
aAdd(aReg1350, {})
nPos:= Len(aReg1350)
aAdd (aReg1350[nPos], "1350"                   )            //01 - REG
aAdd (aReg1350[nPos], "02"                     )            //02 - SERIE
aAdd (aReg1350[nPos], "nome fabricante 2"      )           //03 - FABRICANTE
aAdd (aReg1350[nPos], "mod bomba 2"            )            //04 - MODELO
aAdd (aReg1350[nPos], "0"                      )            //04 - TIPO_MEDICAO
  
aAdd(aReg1360, {})
nPos:= Len(aReg1360)
aAdd (aReg1360[nPos], "1360"      )            //01 - REG
aAdd (aReg1360[nPos], "02"        )            //02 - NUM_LACRE
aAdd (aReg1360[nPos], dDataAte    )            //03 - DT_APLICACAO
  
aAdd(aReg1370, {})
nPos:= Len(aReg1370)
aAdd (aReg1370[nPos], "1370"      )            //01 - REG
aAdd (aReg1370[nPos], "02"        )            //02 - NUM_BICO
aAdd (aReg1370[nPos], cProd       )            //03 - COD_ITEM
aAdd (aReg1370[nPos], "10"        )
  
//geração do 0200
SPEDSeek("SB1",,xFilial("SB1")+cProd)
SFRG0200(cAlias,@aReg0200,@aReg0190,dDataDe,dDataAte,,cProd)
  
aAdd(aReg1370, {})
nPos:= Len(aReg1370)
aAdd (aReg1370[nPos], "1370"            )            //01 - REG
aAdd (aReg1370[nPos], "022"             )            //02 - NUM_BICO
aAdd (aReg1370[nPos], cProd             )            //03 - COD_ITEM
aAdd (aReg1370[nPos], "10"              )
  
//geração do 0200
SPEDSeek("SB1",,xFilial("SB1")+cProd)
SFRG0200(cAlias,@aReg0200,@aReg0190,dDataDe,dDataAte,,cProd)
  
GrvRegTrS (cAlias,2,aReg1350)
GrvRegTrS (cAlias,2,aReg1360)
GrvRegTrS (cAlias,2,aReg1370)
  
//-------------------------------- 3
  
aReg1350     := {}
aReg1360     := {}
aReg1370     := {}
  
aAdd(aReg1350, {})
nPos:= Len(aReg1350)
aAdd (aReg1350[nPos], "1350"                   )            //01 - REG
aAdd (aReg1350[nPos], "03"                     )            //02 - SERIE
aAdd (aReg1350[nPos], "nome fabricante 3"      )          //03 - FABRICANTE
aAdd (aReg1350[nPos], "mod bomba 3"            )            //04 - MODELO
aAdd (aReg1350[nPos], "0"                      )            //04 - TIPO_MEDICAO
  
aAdd(aReg1360, {})
nPos:= Len(aReg1360)
aAdd (aReg1360[nPos], "1360"      )            //01 - REG
aAdd (aReg1360[nPos], "03"        )            //02 - NUM_LACRE
aAdd (aReg1360[nPos], dDataAte    )            //03 - DT_APLICACAO
  
aAdd(aReg1360, {})
nPos:= Len(aReg1360)
aAdd (aReg1360[nPos], "1360"      )            //01 - REG
aAdd (aReg1360[nPos], "033"       )            //02 - NUM_LACRE
aAdd (aReg1360[nPos], dDataAte    )            //03 - DT_APLICACAO
  
aAdd(aReg1370, {})
nPos:= Len(aReg1370)
aAdd (aReg1370[nPos], "1370"      )            //01 - REG
aAdd (aReg1370[nPos], "03"        )            //02 - NUM_BICO
aAdd (aReg1370[nPos], cProd       )            //03 - COD_ITEM
aAdd (aReg1370[nPos], "10"        )
  
//geração do 0200
SPEDSeek("SB1",,xFilial("SB1")+cProd)
SFRG0200(cAlias,@aReg0200,@aReg0190,dDataDe,dDataAte,,cProd)
  
aAdd(aReg1370, {})
nPos:= Len(aReg1370)
aAdd (aReg1370[nPos], "1370"      )            //01 - REG
aAdd (aReg1370[nPos], "033"       )            //02 - NUM_BICO
aAdd (aReg1370[nPos], cProd       )            //03 - COD_ITEM
aAdd (aReg1370[nPos], "10"        )
  
//geração do 0200
SPEDSeek("SB1",,xFilial("SB1")+cProd)
SFRG0200(cAlias,@aReg0200,@aReg0190,dDataDe,dDataAte,,cProd)
  
GrvRegTrS (cAlias,3,aReg1350)
GrvRegTrS (cAlias,3,aReg1360)
GrvRegTrS (cAlias,3,aReg1370)
  
Return ()

Aviso
titleImportante

Para gerar um campo do registro com 3 decimais basta informar o conteúdo entre chaves e na segunda posição informar a quantidade de casas decimais.

Exemplo:

Como ficará o Array do 1300:

No caso será gerado no campo 4 do registro 1300 o valor de 330,000 com 3 decimais.


...