;** Rm_0400C *******************************************************************
;* Relacao Anal¡tico/Centro de Custo                                           *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 25/05/2004 por Jos‚ Lu¡s Ameno da Silva
;Ultima Alteracao: 04/06/2004 por Jos‚ Lu¡s Ameno da Silva
;Motivo Alteracao: Permitir supressÆo de Centros de Custos em brancos
;Ultima Alteracao: 19/09/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog                   
;Ultima Alteracao: 27/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog          
;Ultima Alteracao: 29/12/2016 por Rafael Matos
;Motivo Alteracao: Ajustes MensagemCheckBoxes()
;Ultima Alteracao: 11/05/2017 por Rafael Matos
;Motivo Alteracao: Incluso TG_OPCCUSTO          
;Ultima Alteracao: 27/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog          
;Ultima Alteracao: 16/07/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes agrupamento RM_0400

;*******************************************************************************
;* Rotina p/ Selecionar Registros                                              *
;*******************************************************************************
Proc SelecionaRm_0400C()
ClearAll

;****** Compras - Estoque ***************************************************
If IsTable("\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEC") And
   IsTable("\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEI")
   Then
        {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEC" Enter
        Moveto [Numero do Lancamento   ] Check Example "nlan"
        Moveto [Codigo da Empresa      ] Check TypeIn "~VSDGEMPRESA.."
        Moveto [Nome Fantasia Empresa  ] Check
        Moveto [Tipo do Documento      ] Check
        Moveto [Numero do Documento    ] Check
        Moveto [Nome Fantasia EmitDest ] Check
        Moveto [Data de Entrada        ] Check TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
        {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEI" Enter
        Moveto [Numero do Lancamento   ] Example "nlan"
        Moveto [Sequencia do Lancamento] Check
        Moveto [Codigo do Item         ] Check TypeIn "~VSDGITEM.."
        Moveto [Descricao do Item      ] Check
        Moveto [Unidade Interna        ] Check
        Moveto [Quantidade             ] Check
        Moveto [Preco Total            ] Check
        If CheckTG_OPCCUSTO[1]
           Then Moveto [Codigo CCusto          ] Check TypeIn "Not Blank, ~VSDGCCUSTO.."
           Else Moveto [Codigo CCusto          ] Check TypeIn "~VSDGCCUSTO.."
        Endif
        Moveto [Descricao CCusto       ] Check
        Do_It!
        ClearAll

        Adiciona_DadosRm_0400C("NOTA")
EndIf

;****** Consumo - Estoque ***************************************************
If IsTable("\\Sistemas\\Estoque\\"+Dir_Trab+"RqCabeca") And
   IsTable("\\Sistemas\\Estoque\\"+Dir_Trab+"RqItem")
   Then
        {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"RqCabeca" Enter
        Moveto [Numero do Lancamento   ] Check Example "nlan"
        Moveto [Codigo da Empresa      ] Check TypeIn "~VSDGEMPRESA.."
        Moveto [Nome Fantasia Empresa  ] Check
        Moveto [Tipo de Movimento      ] Check
        Moveto [Tipo do Documento      ] Check
        Moveto [Numero do Documento    ] Check
        Moveto [Descricao Requisitante ] Check
        Moveto [Data de Ocorrencia     ] Check TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
        {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"RqItem" Enter
        Moveto [Numero do Lancamento   ] Example "nlan"
        Moveto [Sequencia do Lancamento] Check
        Moveto [Codigo do Item         ] Check TypeIn "~VSDGITEM.."
        Moveto [Descricao do Item      ] Check
        Moveto [Unidade Interna        ] Check
        Moveto [Quantidade             ] Check
        Moveto [Custo Total            ] Check
        If CheckTG_OPCCUSTO[1]
           Then Moveto [Codigo CCusto          ] Check TypeIn "Not Blank, ~VSDGCCUSTO.."
           Else Moveto [Codigo CCusto          ] Check TypeIn "~VSDGCCUSTO.."
        Endif
        Moveto [Descricao CCusto       ] Check
        Do_It!
        ClearAll

        Adiciona_DadosRm_0400C("REQ")
EndIf

EndProc   ; (SelecionaRm_0400C)

;*******************************************************************************
;* Rotina adicionar dados na Db temporaria                                     *
;*******************************************************************************
Proc Adiciona_DadosRm_0400C(Tipo)

If IsEmpty("Answer")
   Then Return
EndIf

View Tabela
CoEdit "Answer"
Scan
  Moveto Tabela
  End
  Down

  [Codigo da Empresa      ]=[Answer->Codigo da Empresa      ]
  [Nome Fantasia Empresa  ]=[Answer->Nome Fantasia Empresa  ]
  [Numero do Lancamento   ]=[Answer->Numero do Lancamento   ]
  [Numero do Documento    ]=[Answer->Numero do Documento    ]
  [Tipo do Documento      ]=[Answer->Tipo do Documento      ]
  [Codigo do Item         ]=[Answer->Codigo do Item         ]
  [Descricao do Item      ]=[Answer->Descricao do Item      ]
  [Unidade Interna        ]=[Answer->Unidade Interna        ]
  [Codigo CCusto          ]=[Answer->Codigo CCusto          ]
  [Descricao CCusto       ]=[Answer->Descricao CCusto       ]
  Switch
    Case Tipo="NOTA":
         [Tipo de Movimento  ]="ENTRADAS"
         [Data               ]=[Answer->Data de Entrada       ]
         [Origem_Destino     ]=[Answer->Nome Fantasia EmitDest]
         [Entrada_Quantidade ]=[Answer->Quantidade            ]
         [Entrada_Valor Total]=[Answer->Preco Total           ]
    Case Tipo="REQ":
         If [Answer->Tipo de Movimento]="S"
            Then [Tipo de Movimento]="SAIDAS"
                 [Data             ]=[Answer->Data de Ocorrencia      ]
                 [Origem_Destino   ]=[Answer->Descricao Requisitante  ]
                 [Saida_Quantidade ]=[Answer->Quantidade              ]
                 [Saida_Valor Total]=[Answer->Custo Total             ]
            Else [Tipo de Movimento]="ENTRADAS"
                 [Data             ]=[Answer->Data de Ocorrencia      ]
                 [Origem_Destino   ]=[Answer->Descricao Requisitante  ]
                 [Entrada_Quantidade ]=[Answer->Quantidade            ]
                 [Entrada_Valor Total]=[Answer->Custo Total           ]
         EndIf
  EndSwitch

  Moveto "Answer"
EndScan
Do_IT!
ClearAll

EndProc

;*******************************************************************************
;* Rotina p/ processar Db temporaria                                           *
;*******************************************************************************
Proc ProcessaRm_0400C()

CoEdit Tabela
Scan For Not IsBlank([Codigo CCusto])
   [Codigo CCusto1]=SubStr([Codigo CCusto],1,4)+"000"
EndScan
Do_It!
ClearAll
EndProc  ;  (ProcessaRm_0400C)

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
Proc PrincipalRm_0400C()

AGUARDE("Aguarde, Gerando o Relat¢rio")
Tabela=Cria_Temp(PrivDir())
Copy "\\Base\\Sistemas\\Estoque\\Rm_0400" Tabela

Monta_Dir_Trab(VSDGDTINI,VSDGDTFIM)
While Novo_Dir_Trab()
  SelecionaRm_0400C()
EndWhile

If not IsEmpty(Tabela)
   then
        ProcessaRm_0400C()

        IMPRIREL(Tabela,"2")
   else 
        MENSAGEM("N„o existem registros a processar")
EndIf

If IsTable(Tabela)   Then Delete Tabela   EndIf
If IsTable("Answer") Then Delete "Answer" EndIf

EndProc

;-- Chamada principal ----------------------------------------------------------
PrincipalRm_0400C()

Release Vars Tabela
Release Procs PrincipalRm_0400C, SelecionaRm_0400C, ProcessaRm_0400C
