;** EmitRE *********************************************************************
;*  Emissao do Registro de Entrada Opcao 132 / 80 Colunas                      *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 05/12/1995 por Anivel Augusto Rodrigues
;Ultima Alteracao: 31/10/2005 por Anivel Augusto Rodrigues
;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: 28/01/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Sem Movimentacao
;Ultima Alteracao: 04/05/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes 3 Modelos Relatorio
;Ultima Alteracao: 02/03/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes 2 Modelos Relatorio
;Ultima Alteracao: 17/12/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes voltar diretorio ICMS_IPI
;Ultima Alteracao: 27/12/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao modelo P1/A ImpRE80B     
;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: 23/04/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Gerar RET formato excel MODAMIL
;Ultima Alteracao: 26/10/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog   
;Ultima Alteracao: 02/02/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes TG_ESPDOCTO  
;Ultima Alteracao: 17/01/2018 por Bruno Carvalho
;Motivo Alteracao: Ajustes p/ copiar report RM_TX250 ao exibir em v¡deo a ANSWER
;Ultima Alteracao: 19/01/2018 por Kamila Gomes
;Motivo Alteracao: Ajustes p/ copiar tabela RM_TX250 do base
;Ultima Alteracao: 05/10/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes modelos relatorios
;Ultima Alteracao: 25/03/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog   

;*******************************************************************************
;* Rotina para Selecionar Registros                                            *
;*******************************************************************************
Proc SELECIONA()
ClearAll
If IsTable("TEMP")
   Then Delete "TEMP"
EndIf

Sort "\\Sistemas\\Estoque\\RegEntra"
     On "Codigo da Empresa", "Data de Entrada", "Especie da Nota Fiscal", "Codigo",
        "Numero da Nota Fiscal", "Sequencia da Nota Fiscal"
     To "Temp"
ClearAll

If Not IsBlank(VSDGCFOP)
   Then {Ask} {Temp} TypeIn "Fast Delete"
        Moveto [CFO                   ] TypeIn "Not ~VSDGCFOP"
        Do_It!
        ClearAll
EndIf

If Not IsBlank(VSDGESPDOCTO)
   Then {Ask} {Temp} TypeIn "Fast Delete"
        Moveto [Especie da Nota Fiscal] TypeIn "Not ~VSDGESPDOCTO"
        Do_It!
        ClearAll
EndIf

EndProc

;*******************************************************************************
;*                                                                             *
;*******************************************************************************
Proc GeraRSExcel()
private aliq_imcs_ajuste, vl_icms_ajuste

Aguarde("Processando dados")

Sort "\\Sistemas\\Estoque\\RegEntra"
     On "Codigo da Empresa", "Data de Entrada", "Especie da Nota Fiscal", "Codigo",
        "Numero da Nota Fiscal", "Sequencia da Nota Fiscal"
     To "Temp"
ClearAll

if istable("Tmp_re01")
   then delete "Tmp_re01" 
endif

copy "\\base\\sistemas\\icms_ipi\\Tmp_re01" "Tmp_re01"

EmptY("TMP_Re01")

View "Tmp_re01"
Coedit "\\Sistemas\\Estoque\\RegEntra"
scan

   if [Cancelada]="S"  then loop endif

   moveto "Tmp_re01"
   end
   down
   
   [Especie           ]=[\Sistemas\Estoque\RegEntra->Especie da Nota Fiscal     ]
   [Serie             ]=[\Sistemas\Estoque\RegEntra->Serie da Nota Fiscal       ]
   [Numero            ]=numval([\Sistemas\Estoque\RegEntra->Numero da Nota Fiscal])
   [Data              ]=[\Sistemas\Estoque\RegEntra->Data de Entrada            ]
   [UF                ]=[\Sistemas\Estoque\RegEntra->Estado Fornecedor          ]
   [Valor Contabil    ]=[\Sistemas\Estoque\RegEntra->Valor Contabil             ]
   [CFOP              ]=Substr([\Sistemas\Estoque\RegEntra->CFO],1,1)+"."+Substr([\Sistemas\Estoque\RegEntra->CFO],2,3)
   [Base Calculo      ]=[\Sistemas\Estoque\RegEntra->Base Calculo ICMS          ]
   [Aliquota          ]=[\Sistemas\Estoque\RegEntra->Aliquota de ICMS           ]
   [ICMS              ]=[\Sistemas\Estoque\RegEntra->ICMS Debitado              ]

   aliq_imcs_ajuste=0
   vl_icms_ajuste  =0
   switch
     case substr([CFOP],1,1)="2" and [Aliquota]=4  : aliq_imcs_ajuste=2.5
     case substr([CFOP],1,1)="1" and [Aliquota]<25 : aliq_imcs_ajuste=4
     case substr([CFOP],1,1)="1" and [Aliquota]=25 : aliq_imcs_ajuste=5
   endswitch
   vl_icms_ajuste    =round(([Base Calculo      ]*aliq_imcs_ajuste)/100,2)
   
   [Credito Presumido ]=aliq_imcs_ajuste
   [ICMS a Receber    ]=[ICMS]-vl_icms_ajuste

   moveto "\\Sistemas\\Estoque\\RegEntra"

endscan
do_it!
clearall

{Ask} {tmp_re01} check
do_it!
clearall

Limpaguarde()

IMPRIREL("Answer","R")

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_CFOP"          : Campo="TG_FOLHA"
            Case Campo="TG_ESPDOCTO"      : Campo="TG_CFOP"

            Case Campo="TG_TPESCR"        : Campo="TG_ESPDOCTO"
            Case Campo="TG_GRP"           : Campo="TG_TPESCR"

            Case Campo="TG_CODMODELO"     : 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_CFOP"
                         VSDGFOLHA=ControlValue("TG_FOLHA")
                         If IsBlank(VSDGFOLHA)
                            Then VSDGFOLHA=1
                         EndIf
                    Case Campo="TG_CFOP"      : Campo="TG_ESPDOCTO"
                         VSDGCFOP=ControlValue("TG_CFOP")
                    Case Campo="TG_ESPDOCTO"  : Campo="TG_TPESCR"
                    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="TG_CODMODELO"
                         endswitch

                    Case Campo="TG_GRP"         : Campo="TG_CODMODELO"
                         
                    Case Campo="TG_CODMODELO"   : 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_CFOP":
       MSG_CAMPO="????=Filtrar  Branco=Todos"
  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 PARA Ler/Gravacao Opcao   *
;************************************
Proc ModeloRelatoriosCarregaLista()

VSDGCODMODELO     = ""
VSDGMODELO        = ""

;ModeloRelatoriosAdd("XXX XX maximo 70 XX")

ModeloRelatoriosAdd("Criar") ; linha obrigatoria inicial
ModeloRelatoriosAdd("1   Modelo P1")
ModeloRelatoriosAdd("2   Modelo II")
ModeloRelatoriosAdd("3   Modelo P1/A")
ModeloRelatoriosAdd("Fim")
                           
EndProc ;ModeloRelatoriosCarregaLista

;*******************************************************************************
;* ROTINA PRINCIPAL                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Cadastro\\Bibliot"

If Not IsAssigned(SYS_CODIGO_CLIENTE)  Then SYS_CODIGO_CLIENTE=""  EndIf

LimpAguarde()
PROCESSO_OK=True
VSDGEMPRESA=""
VSDGFOLHA  =""
VSDGDTINI  =BlankDate()
VSDGDTFIM  =BlankDate()

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

sys_valor()

ModeloRelatoriosCarregaLista()
VSDGCODMODELO=1

While True
  ShowDialog "Emiss„o do Registro de 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 18 Width 72

    Label  @ 00,00 "Empresa"  For "TG_EMPRESA"
    Accept @ 01,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_EMPRESA" To VSDGEMPRESA
    Accept @ 01,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 "N§Folha"  For "TG_FOLHA"
    Accept @ 05,01 Width 07 "A4"  Picture "#*#" Tag "TG_FOLHA" To VSDGFOLHA

    Label  @ 04,08 "CFOP"  For "TG_CFOP"
    Accept @ 05,09 Width 08 "A4"  Picture "#*#" Tag "TG_CFOP" To VSDGCFOP

    Label  @ 04,17 "EspDocto"  For "TG_ESPDOCTO"
    Accept @ 05,18 Width 08 "A5"  Picture "!*!" Tag "TG_ESPDOCTO" To VSDGESPDOCTO

    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

    Label  @ 11,00  "Modelo de ~R~elat¢rio"  For "TG_CODMODELO"
    Accept @ 12,01  Width 06 "A3"  Picture "!*!" Tag "TG_CODMODELO" To VSDGCODMODELO
    Accept @ 12,06  Width 63 "A60"  Picture "!*!" Tag "TG_MODELO" To VSDGMODELO        

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

  EndDialog
  If Not RetVal Then QuitLoop EndIf
  if not ValidarModelosRelatorios() then loop 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"

  If PROCESSO_OK
     Then 
          switch
            case VSDGTPESCR       ="1" and 
                 DISPOSITIVO_OPCAO="A" and 
                 Tipo_Docto       =2:
                 
              GeraRSExcel()      
            
            otherwise:
              ASP1=""
              ASP2=""
              ARQIMP = DIREPORT+"REGENTRA.TXT"
              Switch
                Case OK="A": ARQIMP = DIREPORT+ARQUIVO+".TXT"
                Case OK="V": ASP1="\""
                             ASP2="\""
              EndSwitch
              Deleta_Arquivo(ARQIMP)
              AGUARDE("Imprimindo")
              SELECIONA()
    
              Switch
                Case VSDGCODMODELO="1" : Play "ImpRe80"
                Case VSDGCODMODELO="2" : Play "ImpRe80A"
                Case VSDGCODMODELO="3" : Play "ImpRe80B"
              EndSwitch
    
              If OK="V"
                 Then Tabela=Cria_Temp(PrivDir())
                      {Tools} {Copy} {Table} {\\Base\\Sistemas\\Estoque\\Rm_tx250} TypeIn Tabela Enter ClearAll
                      {Tools} {ExportImport} {Import} {ASCII} {AppendDelimited} TypeIn ARQIMP Enter
                      TypeIn Tabela Enter ClearAll
                      OPCAOPAG="Todas"
                      Switch
                        Case VSDGCODMODELO="1" : IMPRIREL(Tabela,"1")
                        Case VSDGCODMODELO="2" : IMPRIREL(Tabela,"1")
                        Case VSDGCODMODELO="3" : IMPRIREL(Tabela,"1")
                      EndSwitch
                      Deleta_Arquivo(ARQIMP)
                      Delete Tabela
                 Else If OK="I"
                         Then ImpriArq(ARQIMP)
                      EndIf
                      Mensagem("Impress„o Concluida !")
              EndIf
          endswitch
  EndIf

  Delete "Temp"
  LimpAguarde()
  SetDir "\\Sistemas\\ICMS_IPI"

EndWhile
ClearAll
Release Vars All
Release Procs All
