;** Rm_0501 ********************************************************************
;*  Resumo Producao/Corte                                                      *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 11/04/2019 por Anivel Augusto Rodrigues
;Ultima Alteracao:   /  /     por 
;Motivo Alteracao: 

;*******************************************************************************
;* Rotina p/ Selecionar e Ordernar Registros                                   *
;*******************************************************************************
Proc Seleciona()
ClearAll

;-- Filtro Produ‡Æo ----------------------------------------------------------
{Ask} {Pcfacc} 
Moveto [Numero_Producao_Corte   ] check
Moveto [Codigo da Empresa       ] check TypeIn "~VSDGEMPRESA.."
Moveto [Data_Producao           ] check TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
Do_It!
ClearAll

TabelaRP=Adiciona_Indice_Temp("Numero_Producao_Corte")

;-- Producao -------------------------------------------------------------------
{Ask} {\\Sistemas\\Estoque\\Marcas}
Moveto [Codigo da Marca       ]       TypeIn "_codm"
Moveto [Ano_Colecao           ]       TypeIn "~VSDGANOMARCA.."
{Ask} {\\Sistemas\\Estoque\\Itens}
Moveto [Codigo do Item        ]       TypeIn "_citem"
Moveto [Codigo da Familia     ]       TypeIn "~VSDGFAMI.."
Moveto [Codigo da Marca       ]       TypeIn "_codm, ~VSDGMARCA.."
{Ask} TypeIn TabelaRP Enter
Moveto [Numero_Producao_Corte ]       Example "num"
{Ask} {PcfacRI}
Moveto [Numero_Producao_Corte ] check Example "num"
Moveto [Codigo do Item        ] check TypeIn "_citem"
Moveto [Quantidade Produzida  ]       TypeIn "Calc Sum as \"Quantidade Produzida\""
Do_It!
ClearAll

Tabela=Cria_Temp(PrivDir())
Rename "Answer" Tabela

;-- Totalizando ----------------------------------------------------------------
AGUARDE("Aguarde, Totalizando dados")

{Ask} TypeIn Tabela Enter Check
Moveto [Codigo do Item         ]       TypeIn "_citem!"
{Ask} {\\Sistemas\\Estoque\\Itens}
Moveto [Codigo do Item         ]       TypeIn "_citem"
Moveto [Codigo da Marca        ] Check
Do_it!
ClearAll
Delete Tabela
Rename "Answer" Tabela    

{Ask} TypeIn TabelaRP Enter check 
Moveto [Numero_Producao_Corte ] check Example "num"
{Ask} TypeIn Tabela Enter 
Moveto [Numero_Producao_Corte ]       Example "num"
Moveto [Codigo da Marca       ] Check
Moveto [Quantidade Produzida  ]       TypeIn "Calc Sum as \"Quantidade Produzida\""
Do_It!
ClearAll

Delete Tabela

Tabela=Cria_Temp(PrivDir())
Rename "Answer" Tabela

EndProc   ; (Seleciona)

;*******************************************************************************
;* Rotina p/ Selecionar e Ordernar Registros                                   *
;*******************************************************************************
Proc Processar()
private TabelaMarcas, wc, empant,destant,codant,coluna
ClearAll

CABECALHO_1 =""
CABECALHO_2 =""
CABECALHO_3 =""
CABECALHO_4 =""
CABECALHO_5 =""
CABECALHO_6 =""
CABECALHO_7 =""
CABECALHO_8 =""
CABECALHO_9 =""
CABECALHO_10=""
CABECALHO_11=""

{Ask} {\\sistemas\\estoque\\marcas} 
Moveto [Codigo da Marca       ] typein "_cod"
Moveto [Descricao da Marca    ] Check
{Ask} TypeIn Tabela Enter 
Moveto [Codigo da Marca       ] check typein "_cod!"
Do_It!
ClearAll

Adiciona_Campo("Answer","Coluna(S)")
Sort "Answer" on "Descricao da Marca"

wc=0
CoEditKEy
scan
  wc=wc+1
  [Coluna]=wc
  Switch
    Case wc=1  : CABECALHO_1 =[Descricao da Marca] 
    Case wc=2  : CABECALHO_2 =[Descricao da Marca]
    Case wc=3  : CABECALHO_3 =[Descricao da Marca]
    Case wc=4  : CABECALHO_4 =[Descricao da Marca]
    Case wc=5  : CABECALHO_5 =[Descricao da Marca]
    Case wc=6  : CABECALHO_6 =[Descricao da Marca]
    Case wc=7  : CABECALHO_7 =[Descricao da Marca]
    Case wc=8  : CABECALHO_8 =[Descricao da Marca]
    Case wc=9  : CABECALHO_9 =[Descricao da Marca]
    Case wc=10 : CABECALHO_10=[Descricao da Marca]
    Case wc=11 : CABECALHO_11=[Descricao da Marca]
    otherwise  : [Coluna]=12
  EndSwitch
endscan
Do_It!
ClearAll

TabelaMarcas=Adiciona_Indice_Temp("Codigo da Marca")


Tabela2=Cria_Temp(PrivDir())
copy "\\base\\Sistemas\\Faccao\\RM_0500" Tabela2
Empty(Tabela2)
Adiciona_Indice(Tabela2,"Codigo da Empresa,Destino_Producao,Codigo,Data_Producao")


CoEdit Tabela2,TabelaMarcas,Tabela
Scan
  copytoarray regtabela

  Moveto TabelaMarcas
  Moveto [Codigo da Marca]
  Locate regtabela["Codigo da Marca"]
  If RetVal
     then coluna=[Coluna] 
  endif   

  Moveto Tabela2       
  Moveto [Codigo da Empresa]
  Locate regtabela["Codigo da Empresa"],
         "CORTE",
         "",
         regtabela["Data_Producao"    ]
  If not RetVal
     then 
          end
          down
          [Codigo da Empresa    ]=regtabela["Codigo da Empresa"    ]
          [Destino_Producao     ]="CORTE" 
          [Codigo               ]=""
          [Data_Producao        ]=regtabela["Data_Producao"        ]
          [Data_Extenso         ]=format("W3,AR",day(regtabela["Data_Producao"]))+"/"+MesExt(month(regtabela["Data_Producao"]))
  endif   
  
  Switch
    Case COLUNA= 1 : [Coluna_1 ]=[Coluna_1 ]+regtabela["Quantidade Produzida"]
    Case COLUNA= 2 : [Coluna_2 ]=[Coluna_2 ]+regtabela["Quantidade Produzida"]
    Case COLUNA= 3 : [Coluna_3 ]=[Coluna_3 ]+regtabela["Quantidade Produzida"]
    Case COLUNA= 4 : [Coluna_4 ]=[Coluna_4 ]+regtabela["Quantidade Produzida"]
    Case COLUNA= 5 : [Coluna_5 ]=[Coluna_5 ]+regtabela["Quantidade Produzida"]
    Case COLUNA= 6 : [Coluna_6 ]=[Coluna_6 ]+regtabela["Quantidade Produzida"]
    Case COLUNA= 7 : [Coluna_7 ]=[Coluna_7 ]+regtabela["Quantidade Produzida"]
    Case COLUNA= 8 : [Coluna_8 ]=[Coluna_8 ]+regtabela["Quantidade Produzida"]
    Case COLUNA= 9 : [Coluna_9 ]=[Coluna_9 ]+regtabela["Quantidade Produzida"]
    Case COLUNA=10 : [Coluna_10]=[Coluna_10]+regtabela["Quantidade Produzida"]
    Case COLUNA=11 : [Coluna_11]=[Coluna_11]+regtabela["Quantidade Produzida"]
    otherwise      : [Coluna_12]=[Coluna_12]+regtabela["Quantidade Produzida"]
  EndSwitch
  [Coluna_Total] = [Coluna_1 ]+[Coluna_2 ]+[Coluna_3 ]+[Coluna_4 ]+[Coluna_5 ]+
                   [Coluna_6 ]+[Coluna_7 ]+[Coluna_8 ]+[Coluna_9 ]+[Coluna_10]+
                   [Coluna_11]+[Coluna_12]

  Moveto Tabela
EndScan 
Do_It!
ClearAll

empant ="???"
destant="???"
codant ="???"
wc     =0

CoEdit Tabela2
Scan

  if [Codigo da Empresa]<>empant  or
     [Destino_Producao ]<>destant or
     [Codigo           ]<>codant 
     then
          empant =[Codigo da Empresa]
          destant=[Destino_Producao ]
          codant =[Codigo           ]
          wc     =0
  endif
  
  wc=wc+1
  [NDia]=wc

EndScan 
Do_It!
ClearAll

MudaEstruturaDaTabelaPara(Tabela2,"\\base\\Sistemas\\Faccao\\RM_0500")

{ask} {\\sistemas\\cadastro\\empresas}
moveto [Codigo da Empresa    ] typein "_cemp"
moveto [Nome Fantasia Empresa] typein "_nemp"
{Ask} TypeIn Tabela2 Enter typein "Fast"
moveto [Codigo da Empresa    ] typein "_cemp"
moveto [Nome Fantasia Empresa] typein "changeto _nemp"
Do_It!
ClearAll

Delete TabelaMarcas
Delete Tabela   

Tabela=Tabela2

endproc

;************************************
;* ROTINA PARA Ler/Gravacao Opcao   *
;************************************
Proc ModeloRelatoriosCarregaLista()

VSDGCODMODELO     = ""
VSDGMODELO        = ""

;ModeloRelatoriosAdd("XXX XX maximo 70 XX")

ModeloRelatoriosAdd("Criar") ; linha obrigatoria inicial
ModeloRelatoriosAdd("01  Resumo por Dia/Marca")
ModeloRelatoriosAdd("Fim")
                           
EndProc ;ModeloRelatoriosCarregaLista


;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Dialog(Disparo,Campo,Evento,Elemento)
Temp      = True
TECLA     = ""
MSG_CAMPO = ""
If Disparo="OPEN"  
   Then AoCriarShowDialog()
        TiraSombraShowDialog()
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_FAMI"       : Campo="TG_EMPRESA"
            Case Campo="TG_MARCA"      : Campo="TG_FAMI"
            Case Campo="TG_ANOMARCA"   : Campo="TG_MARCA"
            Case Campo="TG_DTINI"      : Campo="TG_ANOMARCA"
            Case Campo="TG_DTFIM"      : Campo="TG_DTINI"
            Case Campo="TG_CODMODELO"  : 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_FAMI"
                    Case Campo="TG_FAMI"        : Campo="TG_MARCA"
                    Case Campo="TG_MARCA"       : Campo="TG_ANOMARCA"
                    Case Campo="TG_ANOMARCA"    : Campo="TG_DTINI"
                         VSDGANOMARCA=ControlValue("TG_ANOMARCA")
                    Case Campo="TG_DTINI"       : Campo="TG_DTFIM"
                    Case Campo="TG_DTFIM"       : Campo="TG_CODMODELO"
                    Case Campo="TG_CODMODELO"   : Campo="YES"
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
  Case Campo="":
     MSG_CAMPO=""
  Case Campo="TG_ANOMARCA":
     MSG_CAMPO="Em Branco=Todos, ou informe ano para cole‡Æo/marca"
EndSwitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

Proc LimpaCamposTag(Tipo)

Switch
  Case Tipo="Todos":
    VSDGEMPRESA    = ""
    VSDGNOMEMP     = ""     
    VSDGDTINI      = BlankDate()
    VSDGDTFIM      = BlankDate()
    VSDGFAMI       = ""
    VSDGNOMFAMI    = ""
    VSDGMARCA      = ""
    VSDGNOMMARCA   = ""
    
    VSDGANOMARCA   =strval(year(today()))    
EndSwitch

EndProc

;*******************************************************************************
;* ROTINA PRINCIPAL                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Cadastro\\Bibliot"
If Not IsAssigned(SYS_CODIGO_CLIENTE)  Then SYS_CODIGO_CLIENTE=""  EndIf
LimpAguarde()

sys_Valor()

LimpaCamposTag("Todos")

ModeloRelatoriosCarregaLista()

While True
  ShowDialog "Resumo da Produ‡Æo - Corte" 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 22 Width 80

    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 "Familia"  For "TG_FAMI"
    Accept @ 03,02 Width 06 "A3"  Picture "#*#" Tag "TG_FAMI" To VSDGFAMI
    Accept @ 03,09 Width 25 "A25" Picture "!*!" Tag "TG_NOMFAMI" To VSDGNOMFAMI
 
    Label  @ 04,00 "Marca"  For "TG_MARCA"
    Accept @ 05,02 Width 06 "A3"  Picture "#*#" Tag "TG_MARCA"    To VSDGMARCA
    Accept @ 05,09 Width 25 "A22" Picture "!*!" Tag "TG_NOMMARCA" To VSDGNOMMARCA

    Label  @ 06,00 "Ano Cole‡Æo/Marca"  For "TG_ANOMARCA"
    Accept @ 07,01 Width 07 "A4"  Picture "#*#" Tag "TG_ANOMARCA"    To VSDGANOMARCA

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

    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 VSDGDTFIM=BlankDate()
     Then Mensagem("Data Final Invalida !")
          Loop
  EndIf

  DISPOSITIVO()
  If OK="" Then Loop EndIf

  AGUARDE("Aguarde, Processando Dados")
  
  Seleciona()

  If Not IsEmpty(Tabela)
     Then
          Processar()
          
          Switch
            Case VSDGCODMODELO="01"    :   
              Impressao_Orientacao="Paisagem"
              CopyReport "\\base\\Sistemas\\Faccao\\RM_0500" "R" Tabela "R"

          EndSwitch
          IMPRIREL(Tabela,"R")

     Else MENSAGEM("N„o existem registros a processar")
  EndIf

  Delete Tabela

EndWhile
ClearAll
Release Vars All
Release Procs All
