;** Imp_Inv2 *******************************************************************
;*  Emiss„o do Inventario para AF com NCM                                      *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    :
;Ultima Alteracao: 18/04/2005 Davi Pereira Carrano
;Motivo Alteracao: NBM
;Alterado em     : 29/06/2006 por Antonio Marcelo Alves
;Motivo Alteracao: Inclusao ImpriArq()
;Ultima Alteracao: 13/08/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Deleta_Arquivo
;Ultima Alteracao: 21/10/2009 por Cleber Alves
;Motivo Alteracao: Ajustes Empresa Razao
;Ultima Alteracao: 01/11/2010 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes ImpressÆo Totais
;Ultima Alteracao: 22/02/2011 por Bruno Carvalho
;Motivo Alteracao: Altera‡Æo do Campo NBM pro NCM
;Ultima Alteracao: 13/04/2012 por Bruno Carvalho
;Motivo Alteracao: Ajustes "Razao" de 20 para 40 posi‡äes
;Ultima Alteracao: 04/01/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Modelo RM_TX160 = R, Imprimir mais a direita
;Ultima Alteracao: 14/02/2013 por Bruno Carvalho
;Motivo Alteracao: Adicionado filtro "Posse_Estoque"
;Ultima Alteracao: 20/03/2013 por Bruno Carvalho
;Motivo Alteracao: Alterado o Titulo de NBM para NCM (Linha 2)
;Ultima Alteracao: 06/01/2014 por Kamila Gomes
;Motivo Alteracao: Ajustada Op‡Æo Com Complemento
;Ultima Alteracao: 26/02/2015 por Kamila Gomes
;Motivo Alteracao: Ajustada Variavel OPIMP
;Ultima Alteracao: 20/03/2015 por Andrey Fillipe
;Motivo Alteracao: Adicionado no filtro para o cliente informar qual o inicio da Folha
;Ultima Alteracao: 30/07/2015 por Bruno Carvalho/Andrey Fillipe
;Motivo Alteracao: Retirado ASP1 e ASP2 estava dando erro de Insufficient Access
;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: 13/05/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes TG_COMPLEMENTO, CheckTG_COMPLEMENTO[1]

;*******************************************************************************
;* Rotina para gerar subtotal                                                  *
;*******************************************************************************
Proc SubTotal(QUANT,VALOR)

LINHA=LINHA+2
Print File ARQIMP "| "+Spaces(12)+" |"+Spaces(46)+"|"+Spaces(7)+"SubTotal... "
Switch
  Case VSDGNCASASDEC=0 : Print File ARQIMP Format("W16,EIC",QUANT)
  Case VSDGNCASASDEC=1 : Print File ARQIMP Format("W16.1,EIC",QUANT)
  Case VSDGNCASASDEC=2 : Print File ARQIMP Format("W16.2,EIC",QUANT)
  otherwise            : Print File ARQIMP Format("W16.3,EIC",QUANT)    
EndSwitch
Print File ARQIMP "|"+Spaces(16)+"|"+Format("W15.2,EIC",VALOR)+"|"+"\n" 
Print File ARQIMP "| "+Spaces(13)+"|"+Spaces(46)+"|"+Spaces(8)+"|"+Spaces(9)+"|"+Spaces(16)+"|"+Spaces(16)+"|"+Spaces(15)+"|"+"\n"

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

EndProc ;SubTotal()

;*******************************************************************************
;* 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(20)
                  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(8)+"|"+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
If Not IsAssigned(VSDGNFOLHA) Or VSDGNFOLHA=""
   Then FOLHA = 2
   Else FOLHA = Int(NumVal(VSDGNFOLHA))
EndIf  
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  ="****" 

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

  Switch
    Case POSSE_EST<>[Posse_Estoque     ] And POSSE_EST<>"****"  : SubTotal(QTD_POSS,VRT_POSS)
    Case COD_TERC <>[Codigo_Terceiro   ] And COD_TERC <>"****"  : SubTotal(QTD_CODT,VRT_CODT)
    Case TIPO_ITEM<>[Tipo do Item      ] And TIPO_ITEM<>"****"  : SubTotal(QTD_TIPO,VRT_TIPO)
  EndSwitch
  
  If POSSE_EST<>[Posse_Estoque] Or COD_TERC<>[Codigo_Terceiro]
     Then Titulo(1)
  EndIf  

  ;If TIPO_ITEM<>[Tipo do Item] 
  ;   Then Titulo(2)
  ;EndIf       
  
  ;ImpressÆo dos itens
  If CheckTG_COMPLEMENTO[1]
     Then Print File ARQIMP "| "+Format("W12,AL",[Codigo do Item])+" |"+Format("W46,AL",[Descricao Complementar])+"|"+Format("W08,AL",[NCM])+
                            "|  "+Format("W07,AL",[Unidade Interna])+"|"
     Else Print File ARQIMP "| "+Format("W12,AL",[Codigo do Item])+" |"+Format("W46,AL",[Descricao do Item])+"|"+Format("W08,AL",[NCM])+
                            "|  "+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 SubTotal(QTD_POSS,VRT_POSS)
         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
         If CODEMP<>[Codigo da Empresa] Then SubTotal(QTD_POSS,VRT_POSS) EndIf
         SOMAPAR()
         RODAPE()
         TOPOREL()
         SOMA_PARCIAL = True
    Case (LINHA>40) And (CI_15CPP<>"\027x0\015") :               ;Jato Tinta ou Laser
         If CODEMP<>[Codigo da Empresa] Then SubTotal(QTD_POSS,VRT_POSS) EndIf
         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 "|                                             R E G I S T R O  D E  I N V E N T A R I O                                            | "+"\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 EXISTENTES EM: "+Format("D13",VSDGDTREF)+Spaces(65)+"| "+" \n"
Print File ARQIMP "|                                                                                                                                  | "+"\n"
Print File ARQIMP "|==================================================================================================================================|"+"\n"
Print File ARQIMP "|CLASSIFICACAO |                DISCRIMINACAO                 |  NCM   | UNIDADE |   QUANTIDADE   |             VALORES            |"+"\n"
Print File ARQIMP "|              |                                              |        |         |                |--------------------------------| "+"\n"
Print File ARQIMP "|   FISCAL     |                                              |        |         |                |                |               | "+"\n"
Print File ARQIMP "|              |                                              |        |         |                |   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(CheckTG_COMPLEMENTO)
   Then Array CheckTG_COMPLEMENTO[1] CheckTG_COMPLEMENTO[1]=False
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 SubTotal, Titulo, IMPRIME, SomaPar, SomaTot, TOPOREL, Rodape

