;** Rm_0050 ********************************************************************
;*  Explosao de Materiais                                                      *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 28/12/1995 por Anivel Augusto Rodrigues
;Ultima Alteracao: 16/07/2004 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes
;Ultima Alteracao: 13/09/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes
;Ultima Alteracao: 05/10/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes C/ Semiacabados
;Ultima Alteracao: 06/12/2010 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes de criterios
;Ultima Alteracao: 26/08/2011 por Bruno Carvalho
;Motivo Alteracao: Informado Valor VAZIO para Variavel VSDGNPROGC! NÆo Consta no menu! 
;Ultima Alteracao: 22/08/2014 por Bruno Carvalho
;Motivo Alteracao: Ajustes Pre‡o de Custo da Formula
;Ultima Alteracao: 22/08/2014 por Bruno Carvalho
;Motivo Alteracao: Ajustes Pre‡o de Custo da Formula
;Ultima Alteracao: 21/09/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog.                  
;Ultima Alteracao: 13/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog    
;Ultima Alteracao: 28/12/2016 por Rafael Matos
;Motivo Alteracao: Ajustes ShowDialog TG_DESTINAT                
;Ultima Alteracao: 09/03/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Filtro situacaodopedido 

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

ClearAll
{Ask} {FormulaC}
Moveto [Codigo do Produto     ] Example "b"
Moveto [Quantidade Produzida  ] Example "qprod"

{Ask} {FormulaI}
Moveto [Codigo do Produto     ] Example "b"
Moveto [Codigo do Material    ] CheckPlus
Moveto [Descricao do Item     ] CheckPlus
Moveto [Tipo do Item          ] CheckPlus
Moveto [Descricao Tipo do Item] CheckPlus
Moveto [Unidade Interna       ] CheckPlus
Moveto [Quantidade            ] TypeIn "_qfor , Calc (_qfor * (_qp - _qf)) / _qprod as quantidade"
Moveto [Valor Unitario        ] TypeIn "_vu   , Calc ((_qfor * (_qp - _qf)) * _vu) / _qprod as valor"

If Not IsBlank(VSDGNPROGC)
   Then
        {Ask} {\\Sistemas\\Faccao\\CFACC}
        Moveto [Numero_Corte          ] Example "a"
        Moveto [Codigo da Empresa     ] CheckPlus
        Moveto [Nome Fantasia Empresa ] CheckPlus
        Moveto [Data_Programacao      ] CheckPlus                                    
                                                                    
        {Ask} {\\Sistemas\\Faccao\\CFACRI}
        Moveto [Numero_Corte          ] CheckPlus Example "a"
        Moveto [Codigo do Item        ] CheckPlus Example "b" TypeIn ",~VSDGITEM.."
        Moveto [Quantidade Programada ] Example "qp" TypeIn ", >" Example "qf"
        Moveto [Quantidade Produzida  ] Example "qf"
        Moveto [Unidade Fiscal        ] CheckPlus
        Do_It!
        ClearAll

        {Ask} {Answer}
        Moveto [Codigo do Material    ] Example "cmat"
        Moveto [Descricao do Item     ] Example "dmat"
        Moveto [Tipo do Item          ] Example "tite"
        Moveto [Descricao Tipo do Item] Example "dtpi"
        Moveto [Unidade Interna       ] Example "uni"
        Moveto [Quantidade            ] Example "qtd"
        Moveto [Valor                 ] Example "vr"
        Moveto [Codigo da Empresa     ] Example "cemp"
        Moveto [Nome Fantasia Empresa ] Example "nemp"
        Moveto [Data_Programacao      ] Example "dte"
        Moveto [Numero_Corte          ] Example "nped"
        Moveto [Codigo do Item        ] Example "cite"
        Moveto [Unidade Fiscal        ] Example "unf"
        {Ask} TypeIn Tabela Enter TypeIn "Fast Insert"
        Moveto [Codigo do Material    ] Example "cmat"
        Moveto [Descricao do Item     ] Example "dmat"
        Moveto [Tipo do Item          ] Example "tite"
        Moveto [Descricao Tipo do Item] Example "dtpi"
        Moveto [Unidade Interna       ] Example "uni"
        Moveto [Codigo da Empresa     ] Example "cemp"
        Moveto [Nome Fantasia Empresa ] Example "nemp"
        Moveto [Data de Entrega       ] Example "dte"
        Moveto [Numero do Pedido      ] Example "nped"
        Moveto [Codigo do Item        ] Example "cite"
        Moveto [Unidade Fiscal        ] Example "unf"
        Moveto [Quantidade            ] Example "qtd"
        Moveto [Valor                 ] Example "vr"
        Do_It!
        ClearAll
                            
   Else {Ask} {\\Sistemas\\Vendas\\Destin}
        Moveto [Codigo da Destinacao  ] Example "cd"
        Moveto [Tipo Movimento Estoque] TypeIn "S"

        {Ask} {\\Sistemas\\Vendas\\PedidoC}
        Moveto [Numero do Pedido      ] Example "a"
        Moveto [Codigo da Empresa     ] CheckPlus TypeIn "~VSDGEMPRESA.."
        Moveto [Nome Fantasia Empresa ] CheckPlus
        Moveto [Data de Entrega       ] CheckPlus TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
        Moveto [Codigo                ] CheckPlus TypeIn "~VSDGDESTINAT.."
        Moveto [Nome Fantasia EmitDest] CheckPlus
        Moveto [Codigo da Destinacao  ] Example "cd"
        Moveto [Situacao do Pedido    ]
        switch
          case VSDGSITUACAOPEDIDO="JUNTAR ABERTO+SUSPENSO"     : TypeIn "ABERTO or SUSPENSO"
          otherwise                                            : TypeIn "~VSDGSITUACAOPEDIDO.."
        endswitch
        {Ask} {\\Sistemas\\Vendas\\Pedidoi}
        Moveto [Numero do Pedido      ] CheckPlus Example "a"
        Moveto [Codigo do Item        ] CheckPlus Example "b" TypeIn ",~VSDGITEM.."
        Moveto [Quantidade            ] Example "qp" TypeIn ", >" Example "qf"
        Moveto [Quantidade Faturada   ] Example "qf"
        Moveto [Unidade Fiscal        ] CheckPlus
        Do_It!
        ClearAll

        {Ask} {Answer}
        Moveto [Codigo do Material    ] Example "cmat"
        Moveto [Descricao do Item     ] Example "dmat"
        Moveto [Tipo do Item          ] Example "tite"
        Moveto [Descricao Tipo do Item] Example "dtpi"
        Moveto [Unidade Interna       ] Example "uni"
        Moveto [Quantidade            ] Example "qtd"
        Moveto [Valor                 ] Example "vr"
        Moveto [Codigo da Empresa     ] Example "cemp"
        Moveto [Nome Fantasia Empresa ] Example "nemp"
        Moveto [Data de Entrega       ] Example "dte"
        Moveto [Codigo                ] Example "ccli"
        Moveto [Nome Fantasia EmitDest] Example "ncli"
        Moveto [Numero do Pedido      ] Example "nped"
        Moveto [Codigo do Item        ] Example "cite"
        Moveto [Unidade Fiscal        ] Example "unf"
        {Ask} TypeIn Tabela Enter TypeIn "Fast Insert"
        Moveto [Codigo do Material    ] Example "cmat"
        Moveto [Descricao do Item     ] Example "dmat"
        Moveto [Tipo do Item          ] Example "tite"
        Moveto [Descricao Tipo do Item] Example "dtpi"
        Moveto [Unidade Interna       ] Example "uni"
        Moveto [Codigo da Empresa     ] Example "cemp"
        Moveto [Nome Fantasia Empresa ] Example "nemp"
        Moveto [Codigo                ] Example "ccli"
        Moveto [Nome Fantasia EmitDest] Example "ncli"
        Moveto [Data de Entrega       ] Example "dte"
        Moveto [Numero do Pedido      ] Example "nped"
        Moveto [Codigo do Item        ] Example "cite"
        Moveto [Unidade Fiscal        ] Example "unf"
        Moveto [Quantidade            ] Example "qtd"
        Moveto [Valor                 ] Example "vr"
        Do_It!
        ClearAll
EndIf           
                
;**** Semi Acabados  ****
{Ask} {FormulaC}
Moveto [Codigo do Produto     ] Example "b"
Moveto [Quantidade Produzida  ] Example "qprod"

{Ask} {FormulaI}
Moveto [Codigo do Produto     ] CheckPlus Example "b"
Moveto [Codigo do Material    ] CheckPlus
Moveto [Descricao do Item     ] CheckPlus
Moveto [Tipo do Item          ] CheckPlus
Moveto [Descricao Tipo do Item] CheckPlus
Moveto [Unidade Interna       ] CheckPlus
Moveto [Quantidade            ] TypeIn "_qfor , Calc (_qfor * _qtd)  / _qprod as quantidade"
Moveto [Valor Unitario        ] TypeIn "_vu   , Calc ((_qfor * _qtd) * _vu) / _qprod as valor"

{Ask} {Answer}
Moveto [Codigo do Material    ] Example "b"
Moveto [Tipo do Item          ] TypeIn "S"
Moveto [Quantidade            ] Example "qtd"
Moveto [Codigo da Empresa     ] CheckPlus
Moveto [Nome Fantasia Empresa ] CheckPlus
Moveto [Data de Entrega       ] CheckPlus
Moveto [Codigo                ] CheckPlus
Moveto [Nome Fantasia EmitDest] CheckPlus
Moveto [Numero do Pedido      ] CheckPlus
Moveto [Unidade Fiscal        ] CheckPlus
Do_It!
ClearAll      

{Ask} {Answer}
Moveto [Codigo do Material    ] Example "cmat"
Moveto [Descricao do Item     ] Example "dmat"
Moveto [Tipo do Item          ] Example "tite"
Moveto [Descricao Tipo do Item] Example "dtpi"
Moveto [Unidade Interna       ] Example "uni"
Moveto [Quantidade            ] Example "qtd"
Moveto [Valor                 ] Example "vr"
Moveto [Codigo da Empresa     ] Example "cemp"
Moveto [Nome Fantasia Empresa ] Example "nemp"
Moveto [Data de Entrega       ] Example "dte"
Moveto [Codigo                ] Example "ccli"
Moveto [Nome Fantasia EmitDest] Example "ncli"
Moveto [Numero do Pedido      ] Example "nped"
Moveto [Codigo do produto     ] Example "cite"
Moveto [Unidade Fiscal        ] Example "unf"
{Ask} TypeIn Tabela Enter TypeIn "Fast Insert"
Moveto [Codigo do Material    ] Example "cmat"
Moveto [Descricao do Item     ] Example "dmat"
Moveto [Tipo do Item          ] Example "tite"
Moveto [Descricao Tipo do Item] Example "dtpi"
Moveto [Unidade Interna       ] Example "uni"
Moveto [Codigo da Empresa     ] Example "cemp"
Moveto [Nome Fantasia Empresa ] Example "nemp"
Moveto [Codigo                ] Example "ccli"
Moveto [Nome Fantasia EmitDest] Example "ncli"
Moveto [Data de Entrega       ] Example "dte"
Moveto [Numero do Pedido      ] Example "nped"
Moveto [Codigo do Item        ] Example "cite"
Moveto [Unidade Fiscal        ] Example "unf"
Moveto [Quantidade            ] Example "qtd"
Moveto [Valor                 ] Example "vr"
Do_It!
ClearAll

If Not IsEmpty(Tabela)
   Then CopyReport "\\Base\\Sistemas\\Producao\\Rm_0050" "R" Tabela "R"
EndIf
ClearAll

EndProc

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Dialog(Disparo,Campo,Evento,Elemento)
Temp=True
MSG_CAMPO=""
TECLA=""
If Disparo="OPEN"  Then AoCriarShowDialog() EndIf
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] =   9: Temp=False
     Case Evento["KeyCode"] = -59: Dialog_F1()
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_EMPRESA"        : Campo="NO"
            Case Campo="TG_ITEM"           : Campo="TG_EMPRESA"
            Case Campo="TG_DESTINAT"       : Campo="TG_ITEM"
            Case Campo="TG_DTINI"          : Campo="TG_DESTINAT"
            Case Campo="TG_DTFIM"          : Campo="TG_DTINI"
            Case Campo="TG_SITUACAOPEDIDOAS" : 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"  : Campo="TG_ITEM"
                    Case Campo="TG_ITEM"     : Campo="TG_DESTINAT"
                    Case Campo="TG_DESTINAT" : Campo="TG_DTINI"
                    Case Campo="TG_DTINI"    :
                         If Not VSDGDTINI=BlankDate()
                            Then Campo="TG_DTFIM"
                         EndIf
                    Case Campo="TG_DTFIM"    :
                         If Not VSDGDTFIM=BlankDate()
                            Then Campo="TG_SITUACAOPEDIDOAS"
                         EndIf
                    Case Campo="TG_SITUACAOPEDIDOAS" : Campo="YES"
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
  Case Campo="TG_DTINI":
       MSG_CAMPO="Informe a Data Inicial"
EndSwitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc
;*******************************************************************************
;* ROTINA PRINCIPAL                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Cadastro\\Bibliot"
LimpAguarde()

VSDGEMPRESA=""
VSDGNPROGC= "" ;Informei Valor p/ Variavel, afim de evitar problema! Se clientes reclamarem, verificar detalhadamente o uso dessa variavel!
VSDGITEM  = ""
VSDGDTINI = BlankDate()
VSDGDTFIM = BlankDate()
VSDGSITUACAOPEDIDO=""

While True

  ShowDialog "Explos„o de Materiais" Proc "SD_Dialog"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC","TAB",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  
  @ 06,10   Height 14 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_NOMEMPRESA" To VSDGNOMEMP

    Label  @ 02,00 "Item"  For "TG_ITEM"
    Accept @ 03,01 Width 33 "A10" Picture "#*#" Tag "TG_ITEM"     To VSDGITEM
    Accept @ 04,01 Width 33 "A35" Picture "!*!" Tag "TG_NOMITEM" To VSDGNOMITEM

    Label  @ 05,00 "Pessoa"  For "TG_DESTINAT"
    Accept @ 06,01 Width 07 "A04" Picture "[&,#][#*#]" Tag "TG_DESTINAT"     To VSDGDESTINAT
    Accept @ 06,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMDEST" To VSDGNOMDEST

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

    Label  @ 00,35 "Situacao do Pedido"  For "TG_SITUACAOPEDIDOAS"
    Accept @ 01,36 Width 33 "A30"  Picture "ABERTO,SUSPENSO,TODAS,!*!" Tag "TG_SITUACAOPEDIDOAS"  To VSDGSITUACAOPEDIDO

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

  EndDialog
  If Not RetVal Then QuitLoop EndIf

  If IsBlank(VSDGDTINI)
     Then Mensagem("Data Inicial Invalida !")
          Loop
  EndIf

  If IsBlank(VSDGDTFIM)
     Then Mensagem("Data Final Invalida !")
          Loop
  EndIf

  DISPOSITIVO()
  If OK="" Then Loop EndIf
  Tabela=Cria_Temp(PrivDir())
  Copy "\\Base\\Sistemas\\Producao\\Rm_0050" Tabela
  Empty(Tabela)

  AGUARDE("Aguarde, Gerando Relat¢rio")
  SELECIONA()

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

  IMPRIREL(Tabela,"R")

  Delete Tabela

EndWhile
ClearAll
Release Vars All
Release Procs All

