;** Imp_Inv4 *******************************************************************
;*  Emiss„o do Inventario para AF com NCM                                      *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : Luis Gustavo
;Ultima Alteracao: 08/03/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Release Vars/Procs, SEM APS1/APS2 
;Ultima Alteracao: 26/03/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes variavel casas decimais
;Ultima Alteracao: 30/01/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes titulo grupo tipo do item 

;*******************************************************************************
;* Rotina para gerar o titulo                                                  *
;*******************************************************************************
Proc Titulo(Indice)
Private Titulo, Indice

If Indice=1
   Then COD_TERC  = [Codigo_Terceiro]                                
        RAZ_SOC   = [Razao Social]
        POSSE_EST = [Posse_Estoque] 
        Switch
          Case [Posse_Estoque]="DT" : POSSE=POSSE_DT
          Case [Posse_Estoque]="CT" : POSSE=POSSE_CT
        EndSwitch
EndIf             
                                                  
Switch
  Case Indice=1 : TITULO="   Posse: "+Format("W36,AL",POSSE)+Format("W32,AL",COD_TERC+" "+RAZ_SOC)+Spaces(1)                                          
  Case Indice=2 : TITULO="    Tipo: "+Format("W30,AL",[Descricao Tipo do Item])+Spaces(16)
                  TIPO_ITEM = [Tipo do Item]
Endswitch

If Indice=1
   Then Print File ARQIMP "| "+TITULO+"|"+Spaces(16)+"|"+Spaces(16)+"|"+Spaces(15)+"|"+"\n"
   Else Print File ARQIMP "| "+TITULO+"|"+Spaces(12)+"|"+Spaces(9)+"|"+Spaces(16)+"|"+Spaces(16)+"|"+Spaces(15)+"|"+"\n"
EndIf    

LINHA=LINHA+1

EndProc ;Titulo()

;*******************************************************************************
;* Rotina de Impressao                                                         *
;*******************************************************************************
Proc IMPRIME()

Print File ARQIMP CI_15CPP+"\n"
LINHA=0
SOMAP=0
SOMAT=0
SOMAF=0
FOLHA=2
QUBRA_FOLHA=FOLHA

If VSDGOPRELCODALF="2"
   Then Sort TabelaI On "Codigo da Empresa","Posse_Estoque","Razao Social","Codigo_Terceiro","Tipo do Item","Descricao do Item"
   Else Sort TabelaI On "Codigo da Empresa","Posse_Estoque","Codigo_Terceiro","Razao Social","Tipo do Item","Codigo do Item"
EndIf

View TabelaI
View "\\Sistemas\\Cadastro\\Empresas"
Moveto TabelaI
Moveto [Codigo da Empresa]
CODEMP=[]
Moveto "\\Sistemas\\Cadastro\\Empresas"
Moveto [Codigo da Empresa]
Locate CODEMP
If RetVal
   Then IE =[\Sistemas\Cadastro\Empresas->IE Empresa ]
        CGC=[\Sistemas\Cadastro\Empresas->CGC Empresa]
        Razao=[\Sistemas\Cadastro\Empresas->Razao Social Empresa]
EndIf
TOPOREL()

POSSE_EST="****"
COD_TERC ="****"               
RAZ_SOC  ="****" 
TIPO_ITEM="****"

QTD_POSS =0
VRT_POSS =0
VR_POSS  =0

QTD_CODT =0
VRT_CODT =0
VR_CODT  =0

QTD_TIPO =0
VRT_TIPO =0
VR_TIPO  =0

Moveto TabelaI
While True 
  If CODEMP<>[Codigo da Empresa]
     Then SOMAPAR()
          SOMATOT()
          TOPOREL()

          Moveto [Codigo da Empresa]
          CODEMP=[]
          Moveto "\\Sistemas\\Cadastro\\Empresas"
          Moveto [Codigo da Empresa]
          Locate CODEMP
          If RetVal
             Then IE =[\Sistemas\Cadastro\Empresas->IE Empresa ]
                  CGC=[\Sistemas\Cadastro\Empresas->CGC Empresa]
          EndIf
          Moveto TabelaI
  EndIf
  
  If QUBRA_FOLHA<>FOLHA
     Then POSSE_EST = "****"
          COD_TERC  = "****"
          RAZ_SOC   = "****"
          TIPO_ITEM = "****"
          QUBRA_FOLHA=FOLHA
  EndIf

  If POSSE_EST<>[Posse_Estoque] Or COD_TERC<>[Codigo_Terceiro]
     Then Titulo(1)
          TIPO_ITEM="****"     
  EndIf  

  if [Tipo do Item      ]<>TIPO_ITEM
     Then Titulo(2)
  endif        

  ;ImpressÆo dos itens
  If VSDGCOMPLEMENTO = "C"
     Then Print File ARQIMP "| "+Spaces(04)+Format("W12,AL",[NCM])+" |"+Format("W38,AL",[Descricao Complementar])+"|"+Format("W12,AL",[Codigo do Item])+
                                 "|  "+Format("W07,AL",[Unidade Interna])+"|"
     Else Print File ARQIMP "| "+Spaces(04)+Format("W12,AL",[NCM])+" |"+Format("W38,AL",[Descricao do Item])+"|"+Format("W12,AL",[Codigo do Item])+
                                 "|  "+Format("W07,AL",[Unidade Interna])+"|"
  EndIf
  Switch                 
    Case VSDGNCASASDEC=0 : Print File ARQIMP Format("W16,EIC",[Saldo Atual])
    Case VSDGNCASASDEC=1 : Print File ARQIMP Format("W16.1,EIC",[Saldo Atual])
    Case VSDGNCASASDEC=2 : Print File ARQIMP Format("W16.2,EIC",[Saldo Atual])
    otherwise            : Print File ARQIMP Format("W16.3,EIC",[Saldo Atual])
  EndSwitch 
  Print File ARQIMP "|"+Format("W16.3,EIC",([Custo Total Atual]/[Saldo Atual]))+"|"+Format("W15.3,EIC",[Custo Total Atual])+"|"+"\n"
  LINHA=LINHA+1

  QTD_POSS =QTD_POSS+[Saldo Atual]
  VRT_POSS =VRT_POSS+[Custo Total Atual]
  VR_POSS  =VR_POSS +(([Custo Total Atual]*[Aliquota de ICMS])/100) 
  
  QTD_CODT =QTD_CODT+[Saldo Atual]
  VRT_CODT =VRT_CODT+[Custo Total Atual]
  VR_CODT  =VR_CODT +(([Custo Total Atual]*[Aliquota de ICMS])/100) 

  QTD_TIPO =QTD_TIPO+[Saldo Atual]
  VRT_TIPO =VRT_TIPO+[Custo Total Atual]
  VR_TIPO  =VR_TIPO +(([Custo Total Atual]*[Aliquota de ICMS])/100) 

  SOMAF=SOMAF+[Custo Total Atual]
  SOMAP=SOMAP+[Custo Total Atual]
  SOMAT=SOMAT+[Custo Total Atual]

  Skip
  If EOT()
    Then IMPRIME_TRANSF=False
         SOMAPAR()
         SOMATOT()
         RODAPE()
         QuitLoop
  EndIf
  
  If FOLHA=3
     Then IMPRIME_TRANSF=False
     Else IMPRIME_TRANSF=True
  EndIf     

  SOMA_PARCIAL = False
  Switch
    Case (LINHA>42) And (CI_15CPP="\027x0\015")  :               ;Matricial
         SOMAPAR()
         RODAPE()
         TOPOREL()
         SOMA_PARCIAL = True
    Case (LINHA>40) And (CI_15CPP<>"\027x0\015") :               ;Jato Tinta ou Laser
         SOMAPAR()
         RODAPE()
         TOPOREL()
         SOMA_PARCIAL = True
  EndSwitch
  
EndWhile
Print File ARQIMP CI_10CPP+"\n"
Print File ARQIMP CI_6LPP+"\n"

EndProc

;*******************************************************************************
;* Rotina de Soma Parcial                                                      *
;*******************************************************************************
Proc SomaPar()

Print File ARQIMP "|"+Fill("=",130)+"|"+"\n"     
Print File ARQIMP "|"+Spaces(101)+"TOTAL PAGINA:"+Format("W16.3,EIC",SOMAP)+"|"+"\n"
If IMPRIME_TRANSF
   Then Print File ARQIMP "|"+Spaces(101)+" TRANSFERIDO:"+Format("W16.3,EIC",SOMAF)+"|"+"\n"
        IMPRIME_TRANSF=False
EndIf   
LINHA=0                               
SOMAP=0

EndProc

;*******************************************************************************
;* Rotina de Soma Total                                                        *
;*******************************************************************************
Proc SomaTot()

Print File ARQIMP "|"+Fill(" ",130)+"|"+"\n"
Print File ARQIMP "|"+Fill("=",130)+"|"+"\n"
Print File ARQIMP "|"+Spaces(101)+"SOMA TOTAL:  "+Format("W16.3,EIC",SOMAT)+"|"+"\n"

EndProc

;*******************************************************************************
;* Rotina Topo do Relatorio                                                    *
;*******************************************************************************
Proc TOPOREL()

Print File ARQIMP " \n"
Print File ARQIMP "+==================================================================================================================================+"+"\n"
Print File ARQIMP "|                                            LIVRO REGISTRO DE INVENTµRIO - RI - MODELO P7                                         | "+"\n"
Print File ARQIMP "|                                                                                                                                  | "+"\n"
Print File ARQIMP "|  FIRMA: "+Format("W40,AL",Razao)+Spaces(81)+"| "+"\n"
Print File ARQIMP "|  INSCRICAO ESTADUAL: "+Format("W17,AL",IE)+" CNPJ(MF): "+Format("W20,AL",CGC)+Spaces(60)+"| "+"\n"
Print File ARQIMP "|  FOLHA:"+Format("W10,AL",FOLHA)+"             ESTOQUE EXISTENTE EM: "+Format("D13",VSDGDTREF)+Spaces(67)+"| "+" \n"
Print File ARQIMP "|                                                                                                                                  | "+" \n"
Print File ARQIMP "|==================================================================================================================================|"+" \n"
Print File ARQIMP "|  CLASSIFICACAO   |            DISCRIMINACAO             |   CODIGO   | UNIDADE |   QUANTIDADE   |             VALORES            |"+" \n"
Print File ARQIMP "|     FISCAL       |                                      |            |         |                |--------------------------------| "+" \n"
Print File ARQIMP "|                  |                                      |            |         |                |                |               | "+" \n"
Print File ARQIMP "|      NCM         |                                      |            |         |                |   UNITARIO     |    TOTAL      | "+" \n"
Print File ARQIMP "|==================================================================================================================================|" +" \n"
FOLHA=FOLHA+1

EndProc

;*******************************************************************************
;* Rotina de Rodape do Relatorio                                               *
;*******************************************************************************
Proc Rodape()

Print File ARQIMP "+"+Fill("=",130)+"+"+"\n"
Print File ARQIMP "\f"+"\n"

EndProc

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
ARQIMP = DIREPORT+"RELPROD.TXT"
Deleta_Arquivo(ARQIMP)               

If not IsAssigned(VSDGCOMPLEMENTO)
   Then VSDGCOMPLEMENTO = ""
EndIf

If IsTable("Answer") Then Delete "Answer" EndIf

AGUARDE("Imprimindo")
Imprime()

Mensagem("Impress„o Concluida !")
ImpriArq(ARQIMP)

Release Vars LINHA, 
             QTD_POSS, VRT_POSS, VR_POSS,
             QTD_CODT, VRT_CODT, VR_CODT,
             QTD_TIPO, VRT_TIPO, VR_TIPO,

             COD_TERC, RAZ_SOC, POSSE_EST,
             
             SOMAP, SOMAT, SOMAF,
             FOLHA, QUBRA_FOLHA,             

             CODEMP, IE, CGC,
             POSSE_EST, COD_TERC, RAZ_SOC, TIPO_ITEM,
             SOMA_PARCIAL, IMPRIME_TRANSF

Release Procs Titulo, IMPRIME, SomaPar, SomaTot, TOPOREL, Rodape
