;** LRAICMS ********************************************************************
;*  Emissao do Livro Registro de Apuracao ICMS                                 *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 23/08/1999 por Anivel Augusto Rodrigues
;Ultima Alteracao: 03/12/2003 por Karen Lauar Nery
;Motivo Alteracao: Ajustes
;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: 08/03/2012 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Docto Cancelado/Inutilizado
;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: 26/10/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog   
;Ultima Alteracao: 07/08/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes filtro cancelada
;Ultima Alteracao: 13/04/2020 por Anivel Augusto Rodrigues   
;Motivo Alteracao: Ajustes nota cancelada extemporanea=X

;*******************************************************************************
;* Rotina para Selecionar Registros                                            *
;*******************************************************************************
Proc Seleciona()
ClearAll
{Ask} {\\Sistemas\\Estoque\\Regentra}
Moveto [ICMS Debitado] TypeIn "Calc Sum as Credito"
Moveto [Cancelada              ] TypeIn "Not S, Not 4, Not 2, Not X"
Do_It!
If Not IsEmpty("Answer")
   Then VRCREDITO=[Credito]
   Else VRCREDITO=0
EndIf
ClearAll

{Ask} {\\Sistemas\\Vendas\\Regsaida}
Moveto [ICMS Debitado] TypeIn "Calc Sum as Debito"
Moveto [Cancelada              ] TypeIn "Not S, Not 4, Not 2, Not X"
Do_It!
If Not IsEmpty("Answer")
   Then VRDEBITO=[Debito]
   Else VRDEBITO=0
EndIf
ClearAll

OD1_Descr=""
OD1_Vr   =0
OD2_Descr=""
OD2_Vr   =0

EC1_Descr=""
EC1_Vr   =0
EC2_Descr=""
EC2_Vr   =0

OC1_Descr=""
OC1_Vr   =0
OC2_Descr=""
OC2_Vr   =0

ED1_Descr=""
ED1_Vr   =0

D1_Descr=""
D1_Vr   =0
D2_Descr=""
D2_Vr   =0

View "\\Sistemas\\ICMS_IPI\\ImpostoI"
Moveto [Codigo da Empresa]
Locate VSDGEMPRESA,"ICMS",StrVal(Year(VSDGDTINI)),AlinhM(StrVal(Month(VSDGDTINI)),2),1
If RetVal
   Then CREDANT=[Saldo Inicial]
   Else CREDANT=0
        Mensagem("N„o foi Informado o Credito Anterior p/ ICMS no Mes !")
EndIf

View "\\Sistemas\\ICMS_IPI\\ImpostoO"
Scan For [Codigo da Empresa]=VSDGEMPRESA And
         [Codigo do Imposto]="ICMS" And
         [Ano Referencia   ]=StrVal(Year(VSDGDTINI)) And
         [Mes Referencia   ]=AlinhM(StrVal(Month(VSDGDTINI)),2) And
         [Dia Referencia   ]=1

  If [Tipo]=" 2OD1" Then OD1_Descr=[Descricao] OD1_Vr=[Valor] EndIf
  If [Tipo]=" 2OD2" Then OD2_Descr=[Descricao] OD2_Vr=[Valor] EndIf
  If [Tipo]=" 3EC1" Then EC1_Descr=[Descricao] EC1_Vr=[Valor] EndIf
  If [Tipo]=" 3EC2" Then EC2_Descr=[Descricao] EC2_Vr=[Valor] EndIf
  If [Tipo]=" 6OC1" Then OC1_Descr=[Descricao] OC1_Vr=[Valor] EndIf
  If [Tipo]=" 6OC2" Then OC2_Descr=[Descricao] OC2_Vr=[Valor] EndIf
  If [Tipo]=" 7ED1" Then ED1_Descr=[Descricao] ED1_Vr=[Valor] EndIf
  If [Tipo]="12D1 " Then  D1_Descr=[Descricao]  D1_Vr=[Valor] EndIf
  If [Tipo]="12D2 " Then  D2_Descr=[Descricao]  D2_Vr=[Valor] EndIf
EndScan
ClearAll
EndProc   ; (Seleciona)

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

Print File ARQIMP ASP1+CI_15CPP+ASP2+"\n"

LINHA=62
WX4=0
WT=0
TOTDEBITO  = VRDEBITO+OD1_Vr+OD2_Vr+EC1_Vr+EC2_Vr
TOTCREDITO = VRCREDITO+OC1_Vr+OC2_Vr+ED1_Vr+CREDANT
SUBTOTAL   = VRCREDITO+OC1_Vr+OC2_Vr+ED1_Vr
SALDDEV    = TOTDEBITO-TOTCREDITO
IMPOSTO    = SALDDEV-D1_Vr-D2_Vr
IMPREC     =  0
SALDCRED   =  0

If IMPOSTO > 0
   Then IMPREC=IMPOSTO
   Else SALDCRED=IMPOSTO
Endif

TOPOREL()

Print File ARQIMP ASP1+CI_10CPP+ASP2+"\n"

Printer Off
Close Printer
EndProc

;*******************************************************************************
;* Rotina Topo de Formulario                                                   *
;*******************************************************************************
Proc TOPOREL()
FOLHA=FOLHA+1
While True
 If OPCAOPAG<>"Todas"
    Then If FOLHA<OPCAOPAGINI Or
            FOLHA>OPCAOPAGFIM
            Then QuitLoop
         EndIf
 EndIf

 Print File ARQIMP ASP1+ASP2+" \n"
 Print File ARQIMP ASP1+"                                    LIVRO REGISTRO DE APURACAO ICMS - RAICMS - MODELO P9 "+ASP2+"\n"
 Print File ARQIMP ASP1+"------------------------------------------------------------------------------------------------------------------------------------"+ASP2+"\n"
 Print File ARQIMP ASP1+"|                                             RESUMO DA APURACAO DO IMPOSTO                                                        |"+ASP2+" \n"
 Print File ARQIMP ASP1+"|                                                                                                                                  |"+ASP2+" \n"
 Print File ARQIMP ASP1+"|  EMPRESA: "+Format("W40",RS)+" - Cod..: "+ce+Spaces(65)+"|"+ASP2+" \n"
 Print File ARQIMP ASP1+"|  Insc. Est.: "+Format("W15",IE)+Spaces(25)+"C.G.C: "+Format("W18",CGC)+Spaces(15)+"---------- V A L O R E S -----------|"+ASP2+" \n"
 Print File ARQIMP ASP1+"|  FOLHA: "+AlinhM(StrVal(FOLHA),3)+Spaces(42)+"Periodo: "+Format("D13",VSDGDTINI)+" ate "+Format("D13",VSDGDTFIM)+
                    Spaces(06)+"| COLUNA AUXILIAR |      SOMAS      |"+ASP2+" \n"
 Print File ARQIMP ASP1+"|----------------------------------------------------------------------------------------------|-----------------|-----------------|"+ASP2+" \n"
 Print File ARQIMP ASP1+"-------------- DEBITO DO IMPOSTO ---------------------------------------------------------------------------------------------------"+ASP2+" \n"
 Print File ARQIMP ASP1+"|     |  001 - POR SAIDAS /PRESTACOES COM DEBITO DO IMPOSTO"+Spaces(36)+"|"+Spaces(17)+"|"+Format("W16.2,EIC",VRDEBITO)+" |"+ASP2+" \n"
 Print File ARQIMP ASP1+"|     |  002 - OUTROS DEBITOS (DISCRIMINAR ABAIXO)                                             |                 |                 |"+ASP2+" \n"
 Print File ARQIMP ASP1+"|  D  |        "+Format("W80,AL",OD1_Descr)+"|"+Format("W16.2,EIC",OD1_Vr)+" |"+Format("W16.2,EIC",OD1_Vr)+" |"+ASP2+" \n"
 Print File ARQIMP ASP1+"|  E  |        "+Format("W80,AL",OD2_Descr)+"|"+Format("W16.2,EIC",OD2_Vr)+" |"+Format("W16.2,EIC",OD2_Vr)+" |"+ASP2+" \n"
 Print File ARQIMP ASP1+"|  B  |                                                                                        |                 |                 |"+ASP2+" \n"
 Print File ARQIMP ASP1+"|  I  |  003 - ESTORNO DE CREDITOS (DISCRIMINAR ABAIXO)                                        |                 |                 |"+ASP2+" \n"
 Print File ARQIMP ASP1+"|  T  |        "+Format("W80,AL",EC1_Descr)+"|"+Format("W16.2,EIC",EC1_Vr)+" |"+Format("W16.2,EIC",EC1_Vr)+" |"+ASP2+" \n"
 Print File ARQIMP ASP1+"|  O  |        "+Format("W80,AL",EC2_Descr)+"|"+Format("W16.2,EIC",EC2_Vr)+" |"+Format("W16.2,EIC",EC2_Vr)+" |"+ASP2+" \n"
 Print File ARQIMP ASP1+"|     |                                                                                        |                 |                 |"+ASP2+" \n"
 Print File ARQIMP ASP1+"|     |  004 - TOTAL"+Spaces(75)+"|"+Spaces(17)+"|"+Format("W16.2,EIC",TOTDEBITO)+" |"+ASP2+" \n"
 Print File ARQIMP ASP1+"------------------------------------------------------------------------------------------------------------------------------------"+ASP2+" \n"
 Print File ARQIMP ASP1+"-------------- CREDITO DO IMPOSTO --------------------------------------------------------------------------------------------------"+ASP2+" \n"
 Print File ARQIMP ASP1+"|     |  005 - POR ENTRADAS /AQUISICOES COM CREDITO DO IMPOSTO"+Spaces(33)+"|"+Spaces(17)+"|"+Format("W16.2,EIC",VRCREDITO)+" |"+ASP2+" \n"
 Print File ARQIMP ASP1+"|     |  006 - OUTROS CREDITOS (DISCRIMINAR ABAIXO)                                            |                 |                 |"+ASP2+" \n"
 Print File ARQIMP ASP1+"|  C  |        "+Format("W80,AL",OC1_Descr)+"|"+Format("W16.2,EIC",OC1_Vr)+" |"+Format("W16.2,EIC",OC1_Vr)+" |"+ASP2+" \n"
 Print File ARQIMP ASP1+"|  R  |        "+Format("W80,AL",OC2_Descr)+"|"+Format("W16.2,EIC",OC2_Vr)+" |"+Format("W16.2,EIC",OC2_Vr)+" |"+ASP2+" \n"
 Print File ARQIMP ASP1+"|  E  |                                                                                        |                 |                 |"+ASP2+" \n"
 Print File ARQIMP ASP1+"|  D  |  007 - ESTORNO DE DEBITOS (DISCRIMINAR ABAIXO)                                         |                 |                 |"+ASP2+" \n"
 Print File ARQIMP ASP1+"|  I  |        "+Format("W80,AL",ED1_Descr)+"|"+Format("W16.2,EIC",ED1_Vr)+" |"+Format("W16.2,EIC",ED1_Vr)+" |"+ASP2+" \n"
 Print File ARQIMP ASP1+"|  T  |                                                                                        |                 |                 |"+ASP2+" \n"
 Print File ARQIMP ASP1+"|  O  |  008 - SUBTOTAL"+Spaces(72)+"|"+Spaces(17)+"|"+Format("W16.2,EIC",SUBTOTAL)+" |"+ASP2+" \n"
 Print File ARQIMP ASP1+"|     |  009 - SALDO CREDOR DO PERIODO ANTERIOR"+Spaces(48)+"|"+Spaces(17)+"|"+Format("W16.2,EIC",CREDANT)+" |"+ASP2+" \n"
 Print File ARQIMP ASP1+"|     |  010 - TOTAL"+Spaces(75)+"|"+Spaces(17)+"|"+Format("W16.2,EIC",TOTCREDITO)+" |"+ASP2+" \n"
 Print File ARQIMP ASP1+"------------------------------------------------------------------------------------------------------------------------------------"+ASP2+" \n"
 Print File ARQIMP ASP1+"-------------- APURACAO DO SALDO ---------------------------------------------------------------------------------------------------"+ASP2+" \n"
 Print File ARQIMP ASP1+"|     |  011 - SALDO DEVEDOR (DEBITO MENOS CREDITO)"+Spaces(44)+"|"+Spaces(17)+"|"+Format("W16.2,EIC",SALDDEV)+" |"+ASP2+" \n"
 Print File ARQIMP ASP1+"|     |  012 - DEDUCOES (DISCRIMINAR ABAIXO)                                                   |                 |                 |"+ASP2+" \n"
 Print File ARQIMP ASP1+"|  S  |        "+Format("W80,AL",D1_Descr)+"|"+Format("W16.2,EIC",D1_Vr)+" |"+Format("W16.2,EIC",D1_Vr)+" |"+ASP2+" \n"
 Print File ARQIMP ASP1+"|  A  |        "+Format("W80,AL",D2_Descr)+"|"+Format("W16.2,EIC",D2_Vr)+" |"+Format("W16.2,EIC",D2_Vr)+" |"+ASP2+" \n"
 Print File ARQIMP ASP1+"|  L  |                                                                                        |                 |                 |"+ASP2+" \n"
 Print File ARQIMP ASP1+"|  D  |  013 - IMPOSTO A RECOLHER"+Spaces(62)+"|"+Spaces(17)+"|"+Format("W16.2,EIC",IMPREC)+" |"+ASP2+" \n"
 Print File ARQIMP ASP1+"|  O  |                                                                                        |                 |                 |"+ASP2+" \n"
 Print File ARQIMP ASP1+"|     |  014 - SALDO CREDOR (CREDITO MENOS DEBITO)"+Spaces(45)+"|"+Spaces(17)+"|"+Format("W16.2,EIC",SALDCRED)+" |"+ASP2+" \n"
 Print File ARQIMP ASP1+"|     |        A TRANSPORTAR PARA O PERIODO SEGUINTE                                           |                 |                 |"+ASP2+" \n"
 Print File ARQIMP ASP1+"------------------------------------------------------------------------------------------------------------------------------------"+ASP2+" \n"
 Print File ARQIMP ASP1+"-------------- INFORMACOES COMPLEMENTARES ------------------------------------------------------------------------------------------"+ASP2+" \n"
 Print File ARQIMP ASP1+"|                                                                                                                                  |"+ASP2+" \n"
 Print File ARQIMP ASP1+"|                       GUIAS DE RECOLHIMENTO (DAE)                                             GUIA DE INFORMACAO (DAPI)          |"+ASP2+" \n"
 Print File ARQIMP ASP1+"|                                                                                                                                  |"+ASP2+" \n"
 Print File ARQIMP ASP1+"|    NUMERO            DATA         VALOR       ORGAO ARRECADADOR        DATA DA ENTREGA     LOCAL DA ENTREGA (BANCO REPARTICAO)   |"+ASP2+" \n"
 Print File ARQIMP ASP1+"|                                                                                                                                  |"+ASP2+" \n"
 Print File ARQIMP ASP1+"| ------------         /  /     ------------    -----------------                                                                  |"+ASP2+" \n"
 Print File ARQIMP ASP1+"| ------------         /  /     ------------    -----------------                                                                  |"+ASP2+" \n"
 Print File ARQIMP ASP1+"|                                                                                                                                  |"+ASP2+" \n"
 Print File ARQIMP ASP1+"| OBSERVACOES: -----------------------------------------------------------------------------------------------------------------   |"+ASP2+" \n"
 Print File ARQIMP ASP1+"|              -----------------------------------------------------------------------------------------------------------------   |"+ASP2+" \n"
 Print File ARQIMP ASP1+"|              -----------------------------------------------------------------------------------------------------------------   |"+ASP2+" \n"
 Print File ARQIMP ASP1+"|              -----------------------------------------------------------------------------------------------------------------   |"+ASP2+" \n"
 Print File ARQIMP ASP1+"------------------------------------------------------------------------------------------------------------------------------------"+ASP2+" \n"
 QuitLoop
EndWhile
 Print File ARQIMP ASP1+" \f"+ASP2+"\n"

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="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="YES"
                         VSDGFOLHA=ControlValue("TG_FOLHA")
                         If IsBlank(VSDGFOLHA)
                            Then VSDGFOLHA=1
                         EndIf
                  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"
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()

While True
  ShowDialog "Livro Registro de Apura‡„o do ICMS" 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 11 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 @ 5,01 Width 07 "A4"  Picture "#*#" Tag "TG_FOLHA" To VSDGFOLHA

    Pushbutton @ 07,22 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 07,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

  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]
  EndIf
  ClearAll

  AGUARDE("Aguarde, processando")
  Play "\\Sistemas\\Exporta\\RegEntra"
  Play "\\Sistemas\\Exporta\\RegSaida"
  SetDir "\\sistemas\\icms_ipi"
  If IsEmpty("\\Sistemas\\Estoque\\RegEntra") And
     IsEmpty("\\Sistemas\\Vendas\\RegSaida")
     Then MENSAGEM("N„o existem registros a processar")
          Loop
  EndIf
  SELECIONA()

  If PROCESSO_OK
     Then ASP1=""
          ASP2=""
          ARQIMP = DIREPORT+"LRAICMS.TXT"
          Switch
            Case OK="A": ARQIMP = DIREPORT+ARQUIVO+".TXT"
            Case OK="V": ASP1="\""
                         ASP2="\""
          EndSwitch
          Deleta_Arquivo(ARQIMP)
          If IsTable("Answer") Then Delete "Answer" EndIf
          IMPRIME()

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

  Empty "\\Sistemas\\Estoque\\RegEntra"
  Empty "\\Sistemas\\Vendas\\RegSaida"
  LimpAguarde()

EndWhile
ClearAll
Release Vars All
Release Procs All
