;** Rm_0685  *******************************************************************
;* Emissao de Tabela de Precos/C/ Preco de Custo  Particularidade   CARMIG     *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 28/02/97 por Anivel Augusto Rodrigues
;Ultima Alteracao: 06/10/2003 por Karen Lauar Nery
;Motivo Alteracao: Inclusao Proc Preco
;Ultima Alteracao: 21/09/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Ask Custo e Saldo
;Ultima Alteracao: 24/06/2016 por Bruno Carvalho
;Motivo Alteracao: Removido Link nos Report "RM_0682" e utilizado fun‡Æo Ajusta_Answer() e Adiciona_Dados_Tabela()
;Ultima Alteracao: 13/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog                   
;Ultima Alteracao: 07/01/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog
;Ultima Alteracao: 27/11/2017 por Bruno Carvalho
;Motivo Alteracao: Ajustes p/ impressÆo em arquivo   
;Ultima Alteracao: 11/12/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes DiferencaVendaCusto
;Ultima Alteracao: 20/12/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes modelo de relatorio
;Ultima Alteracao: 25/05/2018 por Bruno Carvalho
;Motivo Alteracao: Ajustes no campo TG_ZERADO p/ as op‡äes serem verificadas pelo F1
;Ultima Alteracao: 29/05/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Adicionado ValidarModelosRelatorios()
;Ultima Alteracao: 30/05/2018 por Bruno Carvalho
;Motivo Alteracao: Movido TG_ZERADO na BibShow e ajustado neste script
;Ultima Alteracao: 20/02/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes
;Ultima Alteracao: 11/05/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes modelo 01b, 02b c/ descricao complementar
;Ultima Alteracao: 07/04/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog     
;Ultima Alteracao: 24/09/2020 por Bruno Carvalho
;Motivo Alteracao: Adicionado op‡Æo "F2" para consulta personalizada nos filtros da Marca, Familia, Grupo e Cor_Tecido
;Ultima Alteracao: 26/09/2020 por Bruno Carvalho             
;Motivo Alteracao: Alterado Picture [TG_FAMI],[TG_GRP],[TG_MARCA],[TG_COR_TECIDO] de "[#*#]" para "!*!", permitir caracter "?" p/ ListaRegra

;*******************************************************************************
;* Ajusta Dados na Answer                                                      *  
;*******************************************************************************
Proc Ajusta_Answer()
Private PARAM

;Processo p/ ajustar tabela conforme remo‡Æo do link da tabela "ITENS" nos reports

TABELA = Cria_Temp(PrivDir())
Copy "\\Base\\Sistemas\\Vendas\\RM_0682" TABELA

{Ask} {Answer} Check
Moveto [Codigo do Item        ] Example "_Ite"
{Ask} {\\Sistemas\\Estoque\\Itens}
Moveto [Codigo do Item        ] Example "_Ite"
Moveto [Tributacao de ICMS    ] Check
Moveto [Aliquota de ICMS      ] Check
Moveto [Codigo da Familia     ] Check
Moveto [Descricao da Familia  ] Check
Moveto [Descricao Complementar] Check

Do_It!
ClearAll

Adiciona_Dados_Tabela(TABELA)
Rename TABELA "Answer"    
                               
EndProc ;Ajusta_Answer()                      

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

{Ask} {\\Sistemas\\Estoque\\Itens}
Moveto [Codigo do Item      ] Example "CODIGO"
Switch
  Case ListaRegra_VSDGFAMI_Ativo : Moveto [Codigo da Familia] TypeIn ListaRegra_VSDGFAMI
  Otherwise                      : Moveto [Codigo da Familia] TypeIn "~VSDGFAMI.."
EndSwitch
Switch
  Case ListaRegra_VSDGMARCA_Ativo : Moveto [Codigo da Marca] TypeIn ListaRegra_VSDGMARCA
  Otherwise                       : Moveto [Codigo da Marca] TypeIn "~VSDGMARCA.."
EndSwitch
Switch
  Case ListaRegra_VSDGGRP_Ativo : Moveto [Codigo do Grupo] TypeIn ListaRegra_VSDGGRP
  Otherwise                     : Moveto [Codigo do Grupo] TypeIn "~VSDGGRP.."
EndSwitch
Switch
  Case ListaRegra_VSDGCORTECIDO_Ativo : Moveto [Codigo da Cor_Tecido] TypeIn ListaRegra_VSDGCORTECIDO
  Otherwise                           : Moveto [Codigo da Cor_Tecido] TypeIn "~VSDGCORTECIDO.."
EndSwitch
Moveto [Inativo             ] TypeIn "Not S"
{Ask} {TbPrite} Check
Moveto [Codigo da Tabela    ] TypeIn "~VSDGTABELA.."
Moveto [Codigo do Item      ] Example "CODIGO"

Do_It!
ClearAll

If IsEmpty("Answer")
   Then Return
EndIf

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Modifica estrutura da tabela
{Modify} {Restructure} {Answer} 
Ins Enter  "codigo da empresa" Enter "a4" Enter Enter 
    End Down "Saldo Atual" Enter "$" Enter 
             "Preco de Custo" Enter "$" Enter
             "DiferencaVendaCusto" Enter "N" Do_It!
{Ask} {Answer} TypeIn "Fast"
Moveto [Codigo da Empresa] TypeIn "Changeto "+VSDGEMPRESA
Do_It!
ClearAll

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Adiciona os valores de saldo
{Ask} {\\Sistemas\\Estoque\\SdEstq}
Moveto [Codigo da Empresa] Example "a"
Moveto [Codigo do Item   ] Example "b"
Moveto [Saldo Atual      ] Example "Saldo"
If VSDGOPCUSTO="M"
   Then Moveto [Custo Total Atual] Example "Custo"
   Else Moveto [Preco de Custo   ] Example "Custo"
EndIf
Moveto [Ano Referencia   ] TypeIn "~VSDGANO"
Moveto [Mes Referencia   ] TypeIn "~VSDGMES"

{Ask} {Answer}
Moveto [Codigo da Empresa] Example "a"
Moveto [Codigo do Item   ] Example "b"
Moveto [Saldo Atual      ] TypeIn "Changeto " Example "Saldo"
If VSDGOPCUSTO="M"
   Then Moveto [Preco de Custo   ] TypeIn  "Changeto _Custo/_Saldo"
   Else Moveto [Preco de Custo   ] TypeIn  "Changeto _Custo"
EndIf
Do_It!
ClearAll

Switch
  Case VSDGZERADO="0" :  ;Sem Estoque Zerado
       {Ask} {Answer} typein "Fast Delete"
       Moveto [Saldo Atual      ] TypeIn "blank or 0"
       Do_It!
       ClearAll
  Case VSDGZERADO="2" : ;S¢ Estoque Zerado
       {Ask} {Answer} typein "Fast Delete"
       Moveto [Saldo Atual      ] TypeIn "not blank, not 0"
       Do_It!
       ClearAll
  Case VSDGZERADO="3" : ;S¢ Negativo
       {Ask} {Answer} typein "Fast Delete"
       Moveto [Saldo Atual      ] TypeIn ">=0"
       Do_It!
       ClearAll
EndSwitch

{Ask} {Answer}
Moveto [Preco Unitario     ] typein "_pru"
Moveto [Preco de Custo     ] typein "_prc"
Moveto [DiferencaVendaCusto] typein "changeto ((_pru*100)/_prc)-100"
Do_It!
ClearAll

{Ask} {Answer}
Moveto [Preco de Custo     ] typein "<=0"
Moveto [DiferencaVendaCusto] typein "changeto blank"
Do_It!
ClearAll

{Ask} {Answer}
Moveto [Preco de Custo     ] typein "0, changeto blank"
Do_It!
ClearAll

{Modify} {Restructure} {Answer}
Moveto [Field Name]
Locate "Preco Unitario_Formatado"
If Not RetVal
  Then End Down
      "Preco Unitario_Formatado" Enter "A13"  Enter
EndIf
Do_It! ClearImage


EndProc

;************************************
;* ROTINA PARA FORMATAR O PRECO     *
;************************************
Proc Preco()

Coedit "Answer"

Scan for Not IsBlank([Preco Unitario])

 PRECO=Format("W10.3,EIC",[Preco Unitario])
 If SubStr(PRECO,Len(PRECO),1)="0"
    Then PRECO=Format("W9.2,EIC",[Preco Unitario])+" "
 EndIf
 [Preco Unitario_Formatado]=PRECO

EndScan
Do_It!

EndProc ;(Preco)

;*******************************************************************************
;* 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 : Dialog_F1()
     Case Evento["KeyCode"] = -60 Or 
          Evento["KeyCode"] = "F2" : If Campo="TG_FAMI"       Or 
                                        Campo="TG_GRP"        Or 
                                        Campo="TG_MARCA"      Or 
                                        Campo="TG_COR_TECIDO"  
                                        Then ListaRegra_F2() 
                                     EndIf          
     Case Evento["KeyCode"] =  27 :
          Temp=False
          Switch
            Case Campo="TG_EMPRESA"        : Campo="NO"
            Case Campo="TG_MESANO"         : Campo="TG_EMPRESA"
            Case Campo="TG_TABELA"         : Campo="TG_MESANO"
            Case Campo="TG_FAMI"           : Campo="TG_TABELA"
            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_OPRELCODALF"    : Campo="TG_COR_TECIDO"
            Case Campo="TG_OPCUSTO"        : Campo="TG_OPRELCODALF"
            Case Campo="TG_ZERADO"         : Campo="TG_OPCUSTO"
            Case Campo="TG_CODMODELO"      : Campo="TG_ZERADO"
            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 IsBlank(VSDGEMPRESA)
                            Then VSDGNOMEMP=""
                            Else Campo="TG_MESANO"
                         EndIf
                    Case Campo="TG_MESANO"  :
                         VSDGMES=SubStr(VSDGMESANO,1,2)
                         VSDGANO=SubStr(VSDGMESANO,4,4)
                         Campo = "TG_TABELA"
                    Case Campo="TG_TABELA"     :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_OPRELCODALF"
                    Case Campo="TG_OPRELCODALF":Campo="TG_OPCUSTO"
                    Case Campo="TG_OPCUSTO" :
                         VSDGOPCUSTO=ControlValue("TG_OPCUSTO")
                         If IsBlank(VSDGOPCUSTO)
                            Then VSDGOPCUSTO="M"
                         EndIf
                         Switch
                           Case VSDGOPCUSTO="U": VSDGNOMOPCUSTO="ULTIMO CUSTO"
                           Case VSDGOPCUSTO="M": VSDGNOMOPCUSTO="CUSTO MEDIO"
                         EndSwitch
                         Campo="TG_ZERADO"
                    Case Campo="TG_ZERADO"       : Campo="TG_CODMODELO"
                    Case Campo="TG_CODMODELO"    : Campo="YES"

                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
  Case Campo="TG_OPCUSTO":
       MSG_CAMPO="M=Custo Medio  U=Ultimo Custo "     
       
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  Com Pre‡o Custo/Pre‡o Venda e Diferen‡a")
ModeloRelatoriosAdd("01B Com Pre‡o Custo/Pre‡o Venda e Diferen‡a - Descri‡ao Complementar")
ModeloRelatoriosAdd("02  Com Saldo de Estoque")
ModeloRelatoriosAdd("02B Com Saldo de Estoque                    - Descri‡Æo Complementar")
ModeloRelatoriosAdd("Fim")
                           
EndProc ;ModeloRelatoriosCarregaLista

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

VSDGEMPRESA       = ""
VSDGMESANO        = ""
VSDGTABELA        = ""
VSDGFAMI          = ""
VSDGNOMFAMI       = ""
VSDGGRP           = ""
VSDGNOMGRP        = ""
VSDGMARCA         = ""
VSDGNOMMARCA      = ""
VSDGCORTECIDO     = ""
VSDGNOMCORTECIDO  = ""
VSDGOPRELCODALF   = ""
VSDGOPCUSTO       = ""
VSDGZERADO        = ""

ModeloRelatoriosCarregaLista()
ListaRegra_Funcao("ListaRegra_TGAtivado","[TG_FAMI],[TG_GRP],[TG_MARCA],[TG_COR_TECIDO]")

While True

  ShowDialog "Tabela de Pre‡o Com Custo/Estoque" Proc "SD_Dialog"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC","TAB",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140, -60, "F2"  
   @ 04,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 "Mˆs/Ano"  For "TG_MESANO"
    Accept @ 03,01  Width 10 "A07"  Picture "##.####" Tag "TG_MESANO" To VSDGMESANO

    Label  @ 04,00 "Tabela"  For "TG_TABELA"
    Accept @ 05,01 Width 08 "A5"  Picture "#*#" Tag "TG_TABELA" To VSDGTABELA
    Accept @ 05,09 Width 25 "A30" Picture "!*!" Tag "TG_NOMTAB" To VSDGNOMTAB

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

    Label  @ 08,00 "Grupo"  For "TG_GRP"
    Accept @ 09,02 Width 06 "A3"  Picture "!*!" Tag "TG_GRP" To VSDGGRP
    Accept @ 09,09 Width 25 "A25" Picture "!*!" Tag "TG_NOMGRP" To VSDGNOMGRP

    Label  @ 10,00 "Marca"  For "TG_MARCA"
    Accept @ 11,02 Width 06 "A3"  Picture "!*!" Tag "TG_MARCA"    To VSDGMARCA
    Accept @ 11,09 Width 25 "A25" Picture "!*!" Tag "TG_NOMMARCA" To VSDGNOMMARCA

    Label  @ 12,00 "Cor do Tecido"  For "TG_COR_TECIDO"
    Accept @ 13,01 Width 07 "A4"  Picture "!*!" Tag "TG_COR_TECIDO"    To VSDGCORTECIDO
    Accept @ 13,09 Width 25 "A25" Picture "!*!" Tag "TG_NOMCOR_TECIDO" To VSDGNOMCORTECIDO

    Label  @ 14,00 "Ordem" For "TG_OPRELCODALF"
    Accept @ 15,04 Width 04 "A1"  Picture "1,2" Tag "TG_OPRELCODALF" To VSDGOPRELCODALF
    Accept @ 15,09 Width 25 "A12" Picture "!*!" Tag "TG_NOMOPRELCODALF" To VSDGNOMOPRELCODALF
    
    Label  @ 00,35 "Op‡„o de Pre‡o" For "TG_OPCUSTO"
    Accept @ 01,39 Width 04 "A1"  Picture "M,U,V" Tag "TG_OPCUSTO" To VSDGOPCUSTO
    Accept @ 01,44 Width 25 "A25"  Picture "!*!" Tag "TG_NOMOPCUSTO" To VSDGNOMOPCUSTO

    Label  @ 02,35 "Op‡„o do Estoque" For "TG_ZERADO"
    Accept @ 03,39 Width 04 "A1"  Picture "0,1,2,3" Tag "TG_ZERADO" To VSDGZERADO
    Accept @ 03,44 Width 25 "A25"  Picture "!*!" Tag "TG_DESCZERADO" To VSDGDESCZERADO  

    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 Valida_ShowDialog("") Then Loop EndIf
  if not ValidarModelosRelatorios() then loop endif

  DISPOSITIVO()
  If OK=""  Then Loop EndIf
  
  AGUARDE("Aguarde, Gerando a Tabela de Pre‡os")

  Seleciona()

  If IsEmpty("Answer")
     Then MENSAGEM("N„o existem registros a processar")
          Delete "Answer"
          Loop
  EndIf
  Ajusta_Answer()
  Preco()
  
  Switch
    case VSDGCODMODELO="01"  : CopyReport "\\Base\\Sistemas\\Vendas\\Rm_0682"  "2"  "Answer" "R"
    case VSDGCODMODELO="01B" : CopyReport "\\Base\\Sistemas\\Vendas\\Rm_0682"  "3"  "Answer" "R"

    case VSDGCODMODELO="02"  : CopyReport "\\Base\\Sistemas\\Vendas\\Rm_0682"  "R"  "Answer" "R"
    case VSDGCODMODELO="02B" : CopyReport "\\Base\\Sistemas\\Vendas\\Rm_0682"  "1"  "Answer" "R"

  endSwitch
  
  If VSDGOPRELCODALF = "1"
     Then Seta_Ordem_Report("Answer","R","Codigo do Item","Codigo do Item","")
     Else Seta_Ordem_Report("Answer","R","Codigo do Item","Descricao do Item","")  
  EndIf
  
  IMPRIREL("Answer","R")
  Delete "Answer"

EndWhile
ClearAll
Release Vars All
Release Procs All

