;** Rc_0090  *******************************************************************
;*  Relatorio de Itens em Estoque                                              *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 05/12/1995 por Anivel Augusto Rodrigues
;Ultima Alteracao: 11/12/2003 por Karen Lauar Nery
;Motivo Alteracao: Inclusao Status
;Ultima Alteracao: 26/12/2010 por Bruno Carvalho
;Motivo Alteracao: Novos Ajustes e RelatĒrio para 132 Colunas
;Ultima Alteracao: 29/12/2010 por Bruno Carvalho
;Motivo Alteracao: Adicionado Filtro por CĒdigo de Barras
;Ultima Alteracao: 24/05/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes novos modelos de relatorio         
;Ultima Alteracao: 11/12/2013 por Bruno Carvalho
;Motivo Alteracao: Adicionado "Tipo Codigo de Barras" EAN 14 
;Ultima Alteracao: 17/09/2014 por Andrey Fillipe
;Motivo Alteracao: Adicionado novo modelo de relatorio 04 
;Ultima Alteracao: 14/12/2015 por Kamila Gomes
;Motivo Alteracao: Adicionado novo modelo de relatorio 05 
;Ultima Alteracao: 14/06/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes TG_LOCAL                          
;Ultima Alteracao: 16/09/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog                   
;Ultima Alteracao: 18/11/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes TG_LOCAL
;Ultima Alteracao: 24/11/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes TG_CODMODELO
;Ultima Alteracao: 06/04/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Adicionado Item_Com 
;Ultima Alteracao: 29/05/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Adicionado ValidarModelosRelatorios()
;Ultima Alteracao: 02/07/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Filtro Departamento
;Ultima Alteracao: 07/04/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog     
;Ultima Alteracao: 13/04/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Agrupado RC_0110, RC_0111, RC_0112, RC_0150, RC_0160, RM_0009A,

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

{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 isblank(VSDGCOMPTECIDO) and VSDGCOMPTECIDO<>".."
   then 
        {Ask} {Answer} Check
        moveto [Codigo do Item      ]       typein "_coditem"
        {Ask} {Iten_Tec} Check
        moveto [Codigo do Item      ] Check typein "_coditem"
        Moveto [Composicao          ]       TypeIn VSDGCOMPTECIDO
endif
Do_It!
ClearAll

EndProc

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Dialog(Disparo,Campo,Evento,Elemento)
Temp=True
MSG_CAMPO=""
TECLA=""
If Disparo="OPEN"  
   Then AoCriarShowDialog()
        TiraSombraShowDialog()
EndIf   
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = 9: Temp=False
     Case Evento["KeyCode"] = -59: 
          Switch
            Case Campo="TG_CDBAR"     :
                  ShowPopup " Tipo de CĒdigo de Barras " CENTERED
                          "~A~-EAN13     " : " Tipo: CĒdigo de Barras EAN13                             " : "A-EAN13",
                          "~B~-EAN8      " : " Tipo: CĒdigo de Barras EAN8                              " : "B-EAN8",
                          "~D~-COD128    " : " Tipo: CĒdigo de Barras COD128                            " : "D-COD128",
                          "~F~-EAN14     " : " EAN14 (DUN-14)                                           " : "F-EAN14",
                          Separator,
                          "~G~-EAN13 II  ": " Tipo: CĒdigo de Barras EAN13 II                           " : "G-EAN13",
                          "~J~-EAN13 III ": " Tipo: CĒdigo de Barras EAN13 III                          " : "J-EAN13",
                          "~H~-EAN8 II   ": " Tipo: CĒdigo de Barras EAN8 II                            " : "H-EAN8",
                          "~I~-COD128 II ": " Tipo: CĒdigo de Barras COD128 II                          " : "I-COD128",
                          "~C~ancelar    ": " Cancelar                                                  " : "CANCELAR"
                         EndMenu
                          To MenuVar
                                        
                         Switch
                           Case MenuVar="CANCELAR" Or
                                MenuVar="Esc"         : Return
                           OtherWise : VSDGCDBAR=ControlValue("TG_CDBAR")
                                       CDBAR = MenuVar 
                                       VSDGCDBAR=Substr(MenuVar,1,1)
                                       VSDGNOMCDBAR=Substr(MenuVar,3,Len(MenuVar))
                         EndSwitch
                         RefreshDialog
                         Return True
            OtherWise                 : Dialog_F1()
          EndSwitch  
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_TPITEM"         : Campo="NO"
            Case Campo="TG_FAMI"           : Campo="TG_TPITEM"
            Case Campo="TG_GRP"            : Campo="TG_FAMI"
            Case Campo="TG_MARCA"          : Campo="TG_GRP"
            Case Campo="TG_COR_TECIDO"     : Campo="TG_MARCA"
            Case Campo="TG_DEPART"         : Campo="TG_COR_TECIDO"
            Case Campo="TG_TPTRIBUT"       : Campo="TG_DEPART"
            Case Campo="TG_REFERENCIA"     : Campo="TG_TPTRIBUT"
            Case Campo="TG_STATUS"         : Campo="TG_REFERENCIA"
            Case Campo="TG_CDBAR"          : Campo="TG_STATUS"
            Case Campo="TG_LOCAL"          : Campo="TG_CDBAR"
            Case Campo="TG_NCM"            : Campo="TG_LOCAL"
            Case Campo="TG_COMPTECIDO"     : Campo="TG_NCM"
            Case Campo="TG_CODMODELO"      : Campo="TG_COMPTECIDO"  
            Case Campo="YES" Or Campo="NO" : Campo="TG_TPITEM"
          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_TPITEM"     : Campo="TG_FAMI"
                    Case Campo="TG_FAMI"       : Campo="TG_GRP"
                    Case Campo="TG_GRP"        : Campo="TG_MARCA"
                    Case Campo="TG_MARCA"      : Campo="TG_COR_TECIDO"
                    Case Campo="TG_COR_TECIDO" : Campo="TG_DEPART"
                    Case Campo="TG_DEPART"     : Campo="TG_TPTRIBUT"
                    Case Campo="TG_TPTRIBUT"   : Campo="TG_REFERENCIA"
                    Case Campo="TG_REFERENCIA" : Campo="TG_STATUS"
                    Case Campo="TG_STATUS"     : Campo="TG_CDBAR"
                    Case Campo="TG_CDBAR"      : 
                         VSDGCDBAR=ControlValue("TG_CDBAR")
                         Switch
                           Case VSDGCDBAR="A" : CDBAR = "A-EAN13"
                                                VSDGNOMCDBAR = "EAN13"
                           Case VSDGCDBAR="F" : CDBAR = "F-EAN14"
                                                VSDGNOMCDBAR = "EAN14"
                           Case VSDGCDBAR="G" : CDBAR = "G-EAN13"
                                                VSDGNOMCDBAR = "EAN13"
                           Case VSDGCDBAR="J" : CDBAR = "J-EAN13"
                                                VSDGNOMCDBAR = "EAN13"
                           Case VSDGCDBAR="B" : CDBAR = "B-EAN8"
                                                VSDGNOMCDBAR = "EAN8"
                           Case VSDGCDBAR="H" : CDBAR = "H-EAN8"
                                                VSDGNOMCDBAR = "EAN8"
                           Case VSDGCDBAR="D" : CDBAR = "D-COD128"
                                                VSDGNOMCDBAR = "COD128"                                            
                           Case VSDGCDBAR="I" : CDBAR = "I-COD128"
                                                VSDGNOMCDBAR = "COD128"
                           Case VSDGCDBAR=""  : CDBAR = ""
                                                VSDGNOMCDBAR= "TODOS"
                         EndSwitch
                         Campo="TG_LOCAL"
                    Case Campo="TG_LOCAL"     : Campo="TG_NCM"
                    Case Campo="TG_NCM"       : Campo="TG_COMPTECIDO"
                    Case Campo="TG_COMPTECIDO": Campo="TG_CODMODELO"
                    Case Campo="TG_CODMODELO" : Campo="YES"
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf

Switch
  Case Campo="TG_CDBAR"  : 
       MSG_CAMPO="Informe o tipo de CĒdigo de Barras                   Em Branco = Todos"  
       TECLA=TECLA+"F1=Consulta" 
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("01  Por Tipo Item/Familia/Grupo/Marca")
ModeloRelatoriosAdd("04  Por Tipo Item/Familia/Grupo/Marca     + CĒdigo Fornecedor")
ModeloRelatoriosAdd("13  Por Tipo Item/Familia/Grupo/Marca/Cor + TributaÆo")
ModeloRelatoriosAdd("Separator")
ModeloRelatoriosAdd("02  Por CST ICMS/Aliquota")
ModeloRelatoriosAdd("18  Por CST ICMS + Tipo Imposto")
ModeloRelatoriosAdd("18A Por CST ICMS/Tipo Imposto")
ModeloRelatoriosAdd("18B Por CST ICMS/Tipo Imposto/Aliquota")
ModeloRelatoriosAdd("03  Por CST PIS,COFINS/Aliquota")
ModeloRelatoriosAdd("Separator")
ModeloRelatoriosAdd("05  Com Referencia, DescriÆoComplementar")
ModeloRelatoriosAdd("06  Com Referencia, DescriÆo, ComposiÆo")
ModeloRelatoriosAdd("19  Com FamĄlia, Grupo, NCM")
ModeloRelatoriosAdd("Separator")
ModeloRelatoriosAdd("20  Itens sem indice IBPT cadastrado")
ModeloRelatoriosAdd("Separator")
ModeloRelatoriosAdd("21  Por cĒdigo de Barras")
ModeloRelatoriosAdd("21A Por cĒdigo de Barras - Apenas cĒdigos duplicados")

;;;;;;ModeloRelatoriosAdd("13A Para contagem - Por /Familia + TributaÆo")

ModeloRelatoriosAdd("Fim")
                           
EndProc ;ModeloRelatoriosCarregaLista

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

VSDGTPITEM    =""
VSDGFAMI      =""
VSDGGRP       =""
VSDGMARCA     =""
VSDGCORTECIDO =""
VSDGDEPART    =""
VSDGTPTRIBUT  =""
VSDGREFERENCIA=""

VSDGSTATUS    =""
VSDGCDBAR     =""
VSDGLOCAL     =""
VSDGNCM       =""
VSDGCOMPTECIDO=""

ModeloRelatoriosCarregaLista()
 
While True

  ShowDialog "RelatĒrio de Itens por ?" Proc "SD_Dialog"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC","TAB",-68,
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  
  @ 04,12   Height 22 Width 80

    Label  @ 00,00 "Tipo do Item"  For "TG_TPITEM"
    Accept @ 01,04 Width 04 "A1"  Picture "!" Tag "TG_TPITEM"      To VSDGTPITEM
    Accept @ 01,09 Width 25 "A30" Picture "!*!" Tag "TG_NOMTPITEM" To VSDGNOMTPITEM

    Label  @ 02,00 "Familia"  For "TG_FAMI"
    Accept @ 03,02 Width 06 "A3"  Picture "#*#" Tag "TG_FAMI"      To VSDGFAMI
    Accept @ 03,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMFAMI"   To VSDGNOMFAMI

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

    Label  @ 06,00 "Marca" For "TG_MARCA"
    Accept @ 07,02 Width 06 "A3"  Picture "#*#" Tag "TG_MARCA"     To VSDGMARCA
    Accept @ 07,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMMARCA"  To VSDGNOMMARCA

    Label  @ 08,00 "Cor" For "TG_COR_TECIDO"
    Accept @ 09,01 Width 07 "A4"  Picture "#*#" Tag "TG_COR_TECIDO"    To VSDGCORTECIDO
    Accept @ 09,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMCOR_TECIDO" To VSDGNOMCORTECIDO

    Label  @ 10,00 "Departamento"  For "TG_DEPART"
    Accept @ 11,02 Width 06 "A3"  Picture "#*#" Tag "TG_DEPART"    To VSDGDEPART
    Accept @ 11,09 Width 25 "A25" Picture "!*!" Tag "TG_NOMDEPART" To VSDGNOMDEPART

    Label  @ 12,00 "C.S.T."  For "TG_TPTRIBUT"
    Accept @ 13,02 Width 06 "A3"  Picture "#*#" Tag "TG_TPTRIBUT" To VSDGTPTRIBUT
    Accept @ 13,09 Width 25 "A25" Picture "!*!" Tag "TG_NOMTPTRIBUT" To VSDGNOMTPTRIBUT

    Label  @ 14,00 "Referncia"  For "TG_REFERENCIA"
    Accept @ 15,01 Width 33 "A20" Picture "!*!" Tag "TG_REFERENCIA" To VSDGREFERENCIA

    Label  @ 00,35 "Status do Item" For "TG_STATUS"
    Accept @ 01,39 Width 04 "A1"  Picture "1,2,3" Tag "TG_STATUS" To VSDGSTATUS
    Accept @ 01,44 Width 25 "A12" Picture "!*!" Tag "TG_NOMSTATUS" To VSDGNOMSTATUS

    Label  @ 02,35 "Tipo CĒdigo de Barra" For "TG_CDBAR"
    Accept @ 03,39 Width 04 "A1"  Picture "A,B,D,F,G,J,H,I" Tag "TG_CDBAR" To VSDGCDBAR
    Accept @ 03,44 Width 25 "A12" Picture "!*!" Tag "TG_NOMCDBAR" To VSDGNOMCDBAR

    Label  @ 04,35 "Localizao"  For "TG_LOCAL"
    Accept @ 05,36 Width 33 "A12"  Picture "!*!" Tag "TG_LOCAL" To VSDGLOCAL
    Accept @ 06,36 Width 33 "A20" Picture "!*!" Tag "TG_NOMLOCAL" To VSDGNOMLOCAL

    Label  @ 08,35 "NCM"  For "TG_NCM"
    Accept @ 09,36 Width 11 "A8"   Picture "#*#" Tag "TG_NCM"    To VSDGNCM

    Label  @ 10,35 "ComposiÆo Tecido"  For "TG_COMPTECIDO"
    Accept @ 11,36 Width 33 "A30"  Picture "!*!" Tag "TG_COMPTECIDO" To VSDGCOMPTECIDO

    Label  @ 17,00  "Modelo de ~R~elatĒrio"  For "TG_CODMODELO"
    Accept @ 18,01  Width 06 "A3"  Picture "!*!" Tag "TG_CODMODELO" To VSDGCODMODELO
    Accept @ 18,06  Width 47 "A60"  Picture "!*!" Tag "TG_MODELO" To VSDGMODELO

    Pushbutton @ 18,54 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 18,66 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue

  EndDialog
  If Not RetVal Then QuitLoop EndIf 
  if not ValidarModelosRelatorios() then loop endif         

  If VSDGMODELO="" 
     Then Mensagem("Modelo inv lido")
          Loop
  Endif   

  DISPOSITIVO()
  If OK="" Then Loop EndIf

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

  SELECIONA()

  If IsEmpty("Answer")
     Then MENSAGEM("No existem registros a processar")
          Loop
  EndIf

  Switch
    Case VSDGCODMODELO="01" : CopyReport "\\Base\\Sistemas\\Estoque\\Rc_0010b" "R" "Answer" "R"
    Case VSDGCODMODELO="02" : CopyReport "\\Base\\Sistemas\\Estoque\\Rc_0010b" "2" "Answer" "R"
    Case VSDGCODMODELO="03" : CopyReport "\\Base\\Sistemas\\Estoque\\Rc_0010b" "3" "Answer" "R"
    Case VSDGCODMODELO="04" : CopyReport "\\Base\\Sistemas\\Estoque\\Rc_0010b" "4" "Answer" "R"
    Case VSDGCODMODELO="05" : CopyReport "\\Base\\Sistemas\\Estoque\\Rc_0010b" "5" "Answer" "R"
    Case VSDGCODMODELO="06" : CopyReport "\\Base\\Sistemas\\Estoque\\Rc_0010b" "7" "Answer" "R"
    
    Case VSDGCODMODELO="13" : CopyReport "\\Base\\Sistemas\\Estoque\\Itens"    "R" "Answer" "R"
;;;;Case VSDGCODMODELO="13A": CopyReport "\\Base\\Sistemas\\Estoque\\Rc_0110"  "R" "Answer" "R"

    Case VSDGCODMODELO="19" : CopyReport "\\Base\\Sistemas\\Estoque\\Rc_0150" "R" "Answer" "R"

    Case VSDGCODMODELO="20" : Play "RC_0090A"
                              loop

    Case VSDGCODMODELO="21"  Or
         VSDGCODMODELO="21A": Play "RC_0090B"
                              loop

    Case VSDGCODMODELO="18"  Or
         VSDGCODMODELO="18A" Or
         VSDGCODMODELO="18B": Play "RC_0090C"
                              loop

  EndSwitch
  IMPRIREL("Answer","R")

  Delete "Answer"

EndWhile
ClearAll
Release Vars All
Release Procs All

