;** RC_0090A *******************************************************************
;*  Relatorio ERROS IBPT                                                       *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 08/06/2013 por Anivel Augusto Rodrigues
;Ultima Alteracao: 10/02/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes IBPT 0.0.6 
;Ultima Alteracao: 16/12/2014 por Luis Gustavo
;Motivo Alteracao: Implementado na Proc Pega_AliqIBPT(), para buscar o estado da empresa padrao do sistema
;Ultima Alteracao: 18/09/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog                   
;Ultima Alteracao: 21/10/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Pega_AliqIBPT             
;Ultima Alteracao: 13/04/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Agrupado RC_0090, substituido RC_0160

;*******************************************************************************
;* Rotina p/ Selecionar e Order Registros                                      *
;*******************************************************************************
Proc RC_0090A_Seleciona()

{Ask} {Itens} Check
moveto [Codigo do Item      ] typein "_coditem!"
Moveto [Tipo do Item        ] TypeIn "~VSDGTPITEM.."
Moveto [Codigo da Familia   ] TypeIn "~VSDGFAMI.."
Moveto [Codigo do Grupo     ] TypeIn "~VSDGGRP.."
Moveto [Codigo da Marca     ] TypeIn "~VSDGMARCA.."
Moveto [Codigo da Cor_Tecido] TypeIn "~VSDGCORTECIDO.."
Moveto [Referencia          ] TypeIn "~VSDGREFERENCIA.."
if search("..",VSDGLOCAL)>0
   then Moveto [Localizacao         ] TypeIn VSDGLOCAL
   else Moveto [Codigo_Localizacao  ] TypeIn "~VSDGLOCAL.."
endif   
Moveto [Inativo]            
Switch
  Case VSDGSTATUS="1": TypeIn "N"
  Case VSDGSTATUS="2": TypeIn "S"
EndSwitch
Moveto [Tipo Codigo_Barras]
If CDBAR <> ""
   Then TypeIn CDBAR
EndIf
Moveto [Codigo do Departamento] TypeIn "~VSDGDEPART.."
Moveto [NCM                   ] TypeIn "~VSDGNCM.."
Moveto [Tipo Tributacao       ] TypeIn "~VSDGTPTRIBUT.."

{Ask} {Iten_Com} Check
moveto [Codigo do Item      ] Check typein "_coditem"
Do_It!
ClearAll

if Not IsEmpty("Answer")
   Then RC_0090A_Processa()
Endif   

endproc

;*******************************************************************************
;* Rotina p/ Selecionar e Order Registros                                      *
;*******************************************************************************
Proc RC_0090A_Processa()

NR = NRecords("Answer")
View "\\Sistemas\\Cadastro\\Empresas"
View "\\Sistemas\\Vendas\\Tibpt"
CoEdit "Answer"
Scan

  Barra(NR, RecNo())
  Aguarde("Aguarde, Processando "+BARRA_STRING)

  Switch
   Case [Tipo do Item]="C" : Aliq=RC_0090A_Pega_AliqIBPT([Tipo Tributacao], [Tipo do Item], [Codigo_Servico], "")
   OtherWise               : Aliq=RC_0090A_Pega_AliqIBPT([Tipo Tributacao], [Tipo do Item], [NCM           ], [EX_TIPI])
  EndSwitch

  If Aliq=0        
     Then [Inativo]="X"
  Endif   

EndScan
Do_It!
ClearAll

{Ask} {Answer} Check
Moveto [Inativo     ] TypeIn "X"
Do_It!
ClearAll

EndProc

;*******************************************************************************
;* Consulta IBPT                                                               *
;*******************************************************************************
Proc RC_0090A_Pega_AliqIBPT(cst, tpitem, ncm, ex)
private cst, tpitem, ncm, ex, orig, codigo, tipo, aliq, regTibpt, regempresas, UF_EMPRESA  

If Not IsAssigned(VSDG_EMPRESA_PADRAO)          
   Then 
        UF_EMPRESA = "MG"
   else
        getrecord "\\Sistemas\\Cadastro\\Empresas" VSDG_EMPRESA_PADRAO to regempresas
        If RetVal
           Then UF_EMPRESA = regempresas["UF Empresa"]
           Else UF_EMPRESA = ""
        EndIf
EndIf

orig=SubStr(cst,1,1)
Switch
 Case orig="1" Or orig="2" Or       
      orig="6" Or orig="7"    : orig="I"  
 OtherWise                    : orig="N"
EndSwitch

aliq=0
Switch
 Case TpItem="C" :
    tipo="2"
    If ncm>0
       Then codigo=StrVal(ncm)
       Else codigo=""
    EndIf
       ex=""
 OtherWise                    : 
     tipo="0"
   codigo=ncm
EndSwitch

getrecord "\\Sistemas\\Vendas\\Tibpt" UF_EMPRESA,codigo,ex,tipo to regTibpt
if retval
  Then 
       Switch
         Case orig="N" : aliq=regTibpt["NacionalFederal" ]  
         Case orig="I" : aliq=regTibpt["ImportadoFederal"]  
       EndSwitch
endif  

return aliq
EndProc

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
Proc RC_0090A_Principal()

AGUARDE("Aguarde, gerando o relatĒrio")

RC_0090A_Seleciona()

If IsEmpty("Answer")
   Then 
        MENSAGEM("No existem registros a processar")
   else
        CopyReport "\\Base\\Sistemas\\Estoque\\Rc_0010b" "6" "Answer" "R"
        IMPRIREL("Answer","R")
EndIf
Delete "Answer"

EndProc

;-- Chamada principal ----------------------------------------------------------
RC_0090A_Principal()

Release Vars Tabela
Release Procs RC_0090A_Principal, RC_0090A_Seleciona, RC_0090A_Processa, RC_0090A_Pega_AliqIBPT

