;** ApEICMS ********************************************************************
;*  Emissao da Apuracao de ICMS das Entradas                                   *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 05/12/1995 por Anivel Augusto Rodrigues
;Ultima Alteracao: 03/09/2004 por Jos‚ Lu¡s Ameno da Silva
;Motivo Alteracao: PrivDir
;Alterado em     : 29/06/2006 por Antonio Marcelo Alves
;Motivo Alteracao: Inclusao ImpriArq()
;Ultima Alteracao: 14/08/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Deleta_Arquivo
;Ultima Alteracao: 17/12/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes voltar diretorio ICMS_IPI
;Ultima Alteracao: 23/02/2011 por Bruno Carvalho                           
;Motivo Alteracao: Add Variavel ATIVIDADE    
;Ultima Alteracao: 08/03/2012 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Docto Cancelado/Inutilizado
;Ultima Alteracao: 08/03/2012 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Docto Cancelado/Inutilizado
;Ultima Alteracao: 24/05/2012 por Bruno Carvalho                           
;Motivo Alteracao: Ajustes nas colunas de valores (+1 Digito) 
;Ultima Alteracao: 03/03/2015 por Bruno Carvalho
;Motivo Alteracao: Ajustes ao imprimir direto para a impressora, onde foi alterado o posicionamento da msg de conclusÆo da impressÆo
;Ultima Alteracao: 12/04/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Filtro Tipo Escrituracao, Sub_Apuracao MODAMIL
;Ultima Alteracao: 14/04/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes NAT = Tira_CharEspecial([Descricao do CFO ])
;Ultima Alteracao: 26/10/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog   
;Ultima Alteracao: 08/08/2017 por Anivel Augusto Rodrigues   
;Motivo Alteracao: Ajustes regentra novo campo vr diferencial aliquota
;Ultima Alteracao: 25/03/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog   

;*******************************************************************************
;* Rotina para Selecionar Registros                                            *
;*******************************************************************************
Proc SELECIONA()
ClearAll

{Ask} {\\Sistemas\\Cadastro\\CFO}
Moveto [Codigo Fiscal de Operacao] Example "cfo"
Moveto [Descricao do CFO         ] Check

{Ask} {\\Sistemas\\Estoque\\RegEntra}
Moveto [CFO                   ] Check Example "cfo" TypeIn "!"
Moveto [Aliquota de ICMS      ] Check TypeIn "as Aliquota"
Moveto [Valor Contabil        ] TypeIn "Calc Sum as Valor Contabil"
Moveto [Base Calculo ICMS     ] TypeIn "Calc Sum as Base"
Moveto [ICMS Debitado         ] TypeIn "Calc Sum as Debito"
Moveto [ICMS Isento           ] TypeIn "Calc Sum as Isento"
Moveto [ICMS Outros           ] TypeIn "Calc Sum as Outros"
Moveto [ICMS_Vlr Dif.Aliquota ] TypeIn "Calc Sum as DifAliquota"

Moveto [Cancelada             ] TypeIn "Not S, Not 4"
Do_It!
ClearAll

Sort "Answer" on "CFO","Aliquota"
PROCESSO_OK=True

ClearAll
EndProc

;*******************************************************************************
;* Rotina de Impressao                                                         *
;*******************************************************************************
Proc IMPRIME()
Open Printer
Printer On

;Print File ARQIMP ASP1+Sys_Set_Impressora+ASP2+"\n"
Print File ARQIMP ASP1+CI_20CPP+ASP2+"\n"

LINHA=62
WX4=0
WT=0
TOTVLRCP=0
TOTVLRCT=0

TOTBASEICMSP = 0
TOTBASEICMST = 0

TOTCREDICMSP = 0
TOTCREDICMST = 0

TOTISENICMSP = 0
TOTISENICMST = 0

TOTOUTRICMSP = 0
TOTOUTRICMST = 0

TOTSUBSICMSP = 0
TOTSUBSICMST = 0

TOTVDIFALIQP = 0
TOTVDIFALIQT = 0

CFO1=""


View "Answer"
Scan
   If LINHA=62
     Then If WX4=0
             Then TOPOREL()
                  WX4=1
             Else RODAPE()
                  TOPOREL()
          EndIf
   EndIf

   If Substr([CFO],1,1)<>CFO1
      Then If CFO1<>""
              Then SOMAP()
           EndIf
           CFO1=Substr([CFO],1,1)
           If Substr([CFO],1,1)="1"
              Then Tit(" ENTRADAS DO ESTADO")
           EndIf
           If Substr([CFO],1,1)="2"
              Then Tit(" ENTRADAS DE OUTROS ESTADOS")
           EndIf
           If Substr([CFO],1,1)="3"
              Then Tit(" ENTRADAS DE OUTROS PAISES")
           EndIf
   EndIf

   CFO = [CFO              ]
   NAT = Tira_CharEspecial([Descricao do CFO ])
   ALI = [aliquota         ]
   VRC = [valor contabil   ]
   BAS = [base             ]
   CRE = [debito           ]
   ISE = [isento           ]
   OUT = [outros           ]
   DIF = [DifAliquota      ]

   DETALHE1()

   TOTVLRCP=TOTVLRCP+VRC
   TOTVLRCT=TOTVLRCT+VRC

   TOTBASEICMSP = TOTBASEICMSP + BAS
   TOTBASEICMST = TOTBASEICMST + BAS

   TOTCREDICMSP = TOTCREDICMSP + CRE
   TOTCREDICMST = TOTCREDICMST + CRE

   TOTISENICMSP = TOTISENICMSP + ISE
   TOTISENICMST = TOTISENICMST + ISE

   TOTOUTRICMSP = TOTOUTRICMSP + OUT
   TOTOUTRICMST = TOTOUTRICMST + OUT

   TOTVDIFALIQP = TOTVDIFALIQP + DIF
   TOTVDIFALIQT = TOTVDIFALIQT + DIF

EndScan

If LINHA>56
  Then While LINHA<63
         Tit(" ")
       EndWhile
       SOMAP()
       RODAPE()
       TOPOREL()
       SOMAT()
  Else SOMAP()
       SOMAT()
EndIf
Tit(" ")
RODAPE()
Print File ARQIMP ASP1+ASP2+"\n"
;Print File ARQIMP ASP1+Sys_ReSet_Impressora+ASP2+"\n"
Print File ARQIMP ASP1+CI_10CPP+ASP2+"\n"
Printer Off
Close Printer
EndProc

;*******************************************************************************
;* Rotina Topo de Formulario                                                   *
;*******************************************************************************
Proc TOPOREL()
private titulo

if not isblank(VSDGGRP)
   then titulo="GRUPO: "+VSDGNOMGRP
   else titulo=""
endif

FOLHA=FOLHA+1
While True
  If OPCAOPAG<>"Todas"
     Then If FOLHA<OPCAOPAGINI Or
             FOLHA>OPCAOPAGFIM
             Then QuitLoop
          EndIf
  EndIf

 Print File ARQIMP ASP1+Spaces(35)+"R E G I S T R O   D E   A P U R A C A O   D O   I. C. M. S."+ASP2+" \n"
 Print File ARQIMP ASP1+format("W143,AL",titulo)+ASP2+"\n"
 Print File ARQIMP ASP1+"   EMPRESA: "+Format("W40",RS)+" - Cod.: "+ce+ASP2+" \n"
 Print File ARQIMP ASP1+"Insc. Est.: "+Format("W14",IE)+Spaces(27)+"C.G.C.: "+Format("W18",CGC)+ASP2+"\n"
 Print File ARQIMP ASP1+"     FOLHA: "+AlinhM(StrVal(FOLHA),3)+Spaces(37)+"Periodo: "+StrVal(VSDGDTINI)+" ate "+StrVal(VSDGDTFIM)+ASP2+" \n"
 Print File ARQIMP ASP1+ASP2+" \n"
 Print File ARQIMP ASP1+
 "-------------------------------------------------------------------------- ENTRADAS ----------------------------------------------------------------"+ASP2+"\n"
 Print File ARQIMP ASP1+
 "  CODIF.  |                                              |              |                  I.C.M.S.  -  VALORES FISCAIS                             "+ASP2+"\n"
 Print File ARQIMP ASP1+
 "          |                                              |              |---------------------------------------------------------------------------"+ASP2+"\n"
 Print File ARQIMP ASP1+
 "----------|                                              |   VALORES    | OP. COM CREDITO DO IMPOSTO  | OP. SEM CREDITO DO IMPOSTO  |               "+ASP2+"\n"
 Print File ARQIMP ASP1+
 "    |     |                                              |              |-----------------------------------------------------------| DIFERENCIAL   "+ASP2+"\n"
 Print File ARQIMP ASP1+
 "CONT| FISC|                                              |  CONTABEIS   |BASE CALCULO  |IMP.CREDITADO | ISEN/N.TRIB  |    OUTRAS    |    ALIQUOTA   "+ASP2+"\n"
 Print File ARQIMP ASP1+
 "----------------------------------------------------------------------------------------------------------------------------------------------------"+ASP2+"\n"
                   ;1234|9.99  1234567890123456789012345678901234567 a 99,99%|888.888.888,88|777.777.777,77|666.666.666,66|555.555.555,55|444.444.444,44
 Quitloop
EndWhile
LINHA=14
Tit(" ")

EndProc

;*******************************************************************************
;* Rotina de Detalhe 1                                                         *
;*******************************************************************************
proc DETALHE1()

While True
  If OPCAOPAG<>"Todas"
     Then If FOLHA<OPCAOPAGINI Or
             FOLHA>OPCAOPAGFIM
             Then QuitLoop
          EndIf
  EndIf
 Print File ARQIMP ASP1+ "    |"
 If WT=0
    Then Print File ARQIMP Substr(CFO,1,1)+"."+Substr(CFO,2,3)
    Else Print File ARQIMP Spaces(5)
 EndIf
 If Len(CFO)=3
    Then Print File ARQIMP Spaces(2)+Format("W37",nat)
    Else Print File ARQIMP Spaces(1)+Format("W37",nat)
 EndIf
 If WT=0
    Then Print File ARQIMP " /"+Format("W6.2, ei",ali)+"%"
    Else Print File ARQIMP Spaces(9)
 EndIf
 Print File ARQIMP "|"+Format("W14.2, eic",VRC)
 Print File ARQIMP "|"+Format("W14.2, eic",bas)
 Print File ARQIMP "|"+Format("W14.2, eic",cre)
 Print File ARQIMP "|"+Format("W14.2, eic",ise)
 Print File ARQIMP "|"+Format("W14.2, eic",out)
 Print File ARQIMP "|"+Format("W14.2, eic",dif)
 Print File ARQIMP ASP2+"\n"
 Quitloop
EndWhile
LINHA=LINHA+1
Endproc

;*******************************************************************************
;* Rotina de Tiulo                                                             *
;*******************************************************************************
proc Tit(ntit)
Private ntit
While True
  If OPCAOPAG<>"Todas"
     Then If FOLHA<OPCAOPAGINI Or
             FOLHA>OPCAOPAGFIM
             Then QuitLoop
          EndIf
  EndIf

 Print File ARQIMP ASP1+"    |"
 Print File ARQIMP COMPLETA(ntit,52," ")
 Print File ARQIMP "|              |              |              |              |              |"+ASP2+"\n"
 Quitloop
EndWhile
LINHA=LINHA+1
EndProc

;*******************************************************************************
;* Rotina de Soma Parcial                                                      *
;*******************************************************************************
proc SOMAP()
 WT=1
 NAT = "SUBTOTAL:"+Fill(".",38)
 VRC = TOTVLRCP
 BAS = TOTBASEICMSP
 CRE = TOTCREDICMSP
 ISE = TOTISENICMSP
 OUT = TOTOUTRICMSP
 DIF = TOTVDIFALIQP
 DETALHE1()
 Tit(" ")

 TOTVLRCP=0
 TOTBASEICMSP=0
 TOTCREDICMSP=0
 TOTISENICMSP=0
 TOTOUTRICMSP=0
 TOTVDIFALIQP=0
 WT=0

Endproc

;*******************************************************************************
;* Rotina de Soma Total                                                        *
;*******************************************************************************
Proc SOMAT()
 WT=1
 NAT = "   TOTAL:"+Fill(".",38)
 VRC = TOTVLRCT
 BAS = TOTBASEICMST
 CRE = TOTCREDICMST
 ISE = TOTISENICMST
 OUT = TOTOUTRICMST
 DIF = TOTVDIFALIQT
 DETALHE1()

 LINHA=LINHA+1
Endproc

;*******************************************************************************
;* Rotina Topo de Rodape do Formulario                                         *
;*******************************************************************************
proc RODAPE()
While True
  If OPCAOPAG<>"Todas"
     Then If FOLHA<OPCAOPAGINI Or
             FOLHA>OPCAOPAGFIM
             Then QuitLoop
          EndIf
  EndIf

 Print File ARQIMP ASP1+Fill("-",148)
 Print File ARQIMP Chr(12)+ASP2+"\n"
 Quitloop
EndWhile
Endproc

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Dialog(Disparo,Campo,Evento,Elemento)
Temp=True
TECLA    =""
MSG_CAMPO=""
If Disparo="OPEN"  Then AoCriarShowDialog() EndIf
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = -59: Dialog_F1()
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_EMPRESA"       : Campo="NO"
            Case Campo="TG_DTINI"         : Campo="TG_EMPRESA"
            Case Campo="TG_DTFIM"         : Campo="TG_DTINI"
            Case Campo="TG_FOLHA"         : Campo="TG_DTFIM"

            Case Campo="TG_TPESCR"        : Campo="TG_FOLHA"
            Case Campo="TG_GRP"           : Campo="TG_TPESCR"
                 
            Case Campo="YES" Or Campo="NO": Campo="TG_EMPRESA"
          EndSwitch
     Case (Evento["KeyCode"] <= -104 And Evento["KeyCode"] >= -113) Or 
           Evento["KeyCode"]  = -139 Or  Evento["KeyCode"]  = -140:
           SYS_TECLA_ACIONADA=Evento["KeyCode"]
           Seta_Tecla_Acionada()
           CancelDialog
     Case Evento["KeyCode"] = 13:
          Temp=False
          If Checa_TAG()
             Then Switch
                    Case Campo="TG_EMPRESA"    :
                         If Not Isblank(VSDGEMPRESA)
                            Then Campo="TG_DTINI"
                            Else VSDGNOMEMP=""
                         EndIf
                    Case Campo="TG_DTINI"      : Campo="TG_DTFIM"
                    Case Campo="TG_DTFIM"      : Campo="TG_FOLHA"
                    Case Campo="TG_FOLHA"      : Campo="TG_TPESCR"
                         VSDGFOLHA=ControlValue("TG_FOLHA")
                         If IsBlank(VSDGFOLHA)
                            Then VSDGFOLHA=1
                         EndIf
                    Case Campo="TG_TPESCR"      : 
                         VSDGTPESCR=ControlValue("TG_TPESCR")
                         switch
                           case VSDGTPESCR="1"  : VSDGNOMTPESCR="SUB-APURA€¶O/GRUPO PRODUTOS"
                                                  Campo="TG_GRP"
                           
                           otherwise            : VSDGTPESCR   ="0"
                                                  VSDGNOMTPESCR="NORMAL"
                                                  
                                                  VSDGGRP      =""
                                                  VSDGNOMGRP   =""
                                                  
                                                  Campo="YES"
                         endswitch

                    Case Campo="TG_GRP"         : Campo="YES"
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
  Case Campo="TG_EMPRESA":
       MSG_CAMPO="Informe uma empresa"
  Case Campo="TG_DTINI":
       MSG_CAMPO="Informe a Data Inicial"
  Case Campo="TG_FOLHA":
       MSG_CAMPO="Informe o n£mero da folha inicial"
  Case Campo="TG_TPESCR":
       MSG_CAMPO="Tipo Escritura‡Æo: 0=Normal  1=Sub-Apura‡Æo/Grupo Produtos"
  Case Campo="TG_GRP":
       MSG_CAMPO="Informe o grupo especial de produtos"
       
EndSwitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

;*******************************************************************************
;* ROTINA PRINCIPAL                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Cadastro\\Bibliot"
LimpAguarde()
PROCESSO_OK=True
VSDGEMPRESA=""
VSDGFOLHA  =""
VSDGDTINI  =BlankDate()
VSDGDTFIM  =BlankDate()

VSDGTPESCR   ="0"
VSDGNOMTPESCR="NORMAL"
VSDGGRP      =""
VSDGNOMGRP   =""

sys_valor()

While True
  ShowDialog "Registro de Apura‡„o do ICMS / Entradas" Proc "SD_Dialog"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  
   @ 05,12   Height 15 Width 72
   
    Label  @ 00,00 "Empresa"  For "TG_EMPRESA"
    Accept @ 1,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_EMPRESA" To VSDGEMPRESA
    Accept @ 1,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMEMP" To VSDGNOMEMP

    Label  @ 02,00 "Per¡odo Referente de" For "TG_DTINI"
    Accept @ 03,03 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTINI" To VSDGDTINI
    Label  @ 03,16 "at‚" For "TG_DTFIM"
    Accept @ 03,21 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTFIM" To VSDGDTFIM

    Label  @ 04,00 "No Folha"  For "TG_FOLHA"
    Accept @ 05,01 Width 07 "A4"  Picture "#*#" Tag "TG_FOLHA" To VSDGFOLHA

    Label  @ 06,00 "Escritura‡Æo"  For "TG_TPESCR"
    Accept @ 07,04 Width 04 "A1"  Picture "#*#" Tag "TG_TPESCR"    To VSDGTPESCR
    Accept @ 07,09 Width 25 "A30" Picture "!*!" Tag "TG_NOMTPESCR" To VSDGNOMTPESCR

    Label  @ 08,00 "Grupo"  For "TG_GRP"
    Accept @ 09,02 Width 06 "A3"  Picture "#*#" Tag "TG_GRP"    To VSDGGRP
    Accept @ 09,09 Width 25 "A30" Picture "!*!" Tag "TG_NOMGRP" To VSDGNOMGRP

    Pushbutton @ 11,22 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 11,36 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue
  EndDialog

  If Not RetVal Then QuitLoop EndIf

  If IsBlank(VSDGEMPRESA)
     Then Mensagem("Empresa Invalida !")
          Loop
  EndIf

  If VSDGDTFIM=BlankDate() or VSDGDTINI=BlankDate()
     Then Mensagem("Data Invalida !")
          Loop
  EndIf

  If VSDGTPESCR="1" and IsBlank(VSDGGRP)
     Then Mensagem("Grupo Invalido !")
          Loop
  EndIf
  
  DISPOSITIVO()
  If OK="" Then Loop EndIf

  FOLHA=NumVal(VSDGFOLHA)-1
  View "\\Sistemas\\Cadastro\\Empresas"
  Moveto [Codigo da Empresa]
  Locate VSDGEMPRESA
  If RetVal
     Then CE        = [Codigo da Empresa    ]
          NF        = [Nome Fantasia Empresa]
          RS        = [Razao Social Empresa ] 
          CGC       = [CGC Empresa          ]
          IE        = [IE Empresa           ]
          ATIVIDADE = [Atividade            ]
  EndIf
  ClearAll

  AGUARDE("Aguarde, processando")
  Play "\\Sistemas\\Exporta\\RegEntra"
  SetDir "\\sistemas\\icms_ipi"

  SELECIONA()
  If IsEmpty("Answer")
     Then MENSAGEM("N„o existem registros a processar")
          Loop
  EndIf

  If PROCESSO_OK
     Then ASP1=""
          ASP2=""
          ARQIMP = DIREPORT+"ApEICMS.TXT"
          Switch
            Case OK="A": ARQIMP = DIREPORT+ARQUIVO+".TXT"
            Case OK="V": ASP1="\""
                         ASP2="\""
          EndSwitch
          Deleta_Arquivo(ARQIMP)

          AGUARDE("Imprimindo")
          IMPRIME()
          If OK="V"
             Then Tabela=Cria_Temp(PrivDir())
                  {Tools} {Copy} {Table} {\\Base\\Sistemas\\Icms_Ipi\\Rm_tx250} TypeIn Tabela Enter ClearAll
                  {Tools} {ExportImport} {Import} {ASCII} {AppendDelimited} TypeIn ARQIMP Enter
                  TypeIn Tabela Enter ClearAll
                  OPCAOPAG="Todas"
                  IMPRIREL(Tabela,"1")
                  Deleta_Arquivo(ARQIMP)
                  Delete Tabela
             Else If OK="I"
                     Then ImpriArq(ARQIMP)
                  EndIf
                  Mensagem("Impress„o Concluida !")
          EndIf
  EndIf

  Empty "\\Sistemas\\Estoque\\RegEntra"
  Delete "Answer"
  LimpAguarde()

EndWhile
ClearAll
Release Vars All
Release Procs All
