;** RM_0150C *******************************************************************
;* Relacao de Notas Fiscais por Destinacao/Devolucao                           *
;*******************************************************************************
;Autor: Visao/Vise
;Desenvolvido    : 29/01/2010 por Cleber Alves
;Ultima Alteracao: 19/12/2011 por Karina Andrade
;Motivo Alteracao: Corre‡Æo Report
;Ultima Alteracao: 10/07/2012 por Bruno Carvalho
;Motivo Alteracao: Adicionado filtro na ask do NotaI "Situacao_Item"
;Ultima Alteracao: 27/10/2016 por Rafael Matos
;Motivo Alteracao: Ajustes Layout para padroniza‡Æo
;Ultima Alteracao: 10/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog                   
;Ultima Alteracao: 30/05/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes TROCA/DEVOLU€¶O              
;Ultima Alteracao: 07/02/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes agrupado RM_0150 
;Ultima Alteracao: 07/02/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes substituido RM_0020B
;Ultima Alteracao: 10/02/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes TG_DESTIN, TG_TPMOVDESTIN                  
;Ultima Alteracao: 21/02/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes TG_OPDTESI                  
;Ultima Alteracao: 23/07/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes filtro referencia
;Ultima Alteracao: 25/09/2020 por Bruno Carvalho
;Motivo Alteracao: Adicionado filtro por [Atividade] -> VSDGATIVIDADE

;*******************************************************************************
;* Seleciona Registros                                                         *
;*******************************************************************************
Proc RM_0150C_Seleciona()
private tabnotaec

ClearAll

If IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC") And
   IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaI")
   Then  Release Vars Atividade
         If VSDGATIVIDADE<>""
            Then {Ask} {\\Sistemas\\Cadastro\\Destinat} 
                ;Moveto [Tipo            ]        TypeIn "C"
                 Moveto [Codigo          ] Check TypeIn "~VSDGDESTINAT.."
                 Moveto [Codigo Atividade]       TypeIn "~VSDGATIVIDADE.."
                ;Moveto [Inativo         ]        TypeIn "N"
                 Do_It!
                 ClearAll
                 
                 If Not IsEmpty("Answer")
                    Then Atividade=Cria_Temp(PrivDir())
                         Copy "Answer" Atividade
                          
                         Adiciona_Indice(Atividade,"Codigo")
                         
                         {Ask} TypeIn Atividade Enter
                         Moveto [Codigo         ] Example "Pessoa"
                 EndIf
         EndIf  
         {Ask} TypeIn "\\Sistemas\\Estoque\\Itens" Enter
         Moveto [Codigo do Item           ] Example "cite"
         Moveto [Codigo da Marca          ] TypeIn "~VSDGMARCA.."
         Moveto [Referencia               ] TypeIn "~VSDGREFERENCIA.."    
    
         {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC" Enter check
         Moveto [Codigo da Empresa         ] Example "Empresa" TypeIn ", ~VSDGEMPRESA.."
         Moveto [Numero do Documento       ] Example "Docto"
         Moveto [Serie do Documento        ] Example "Serie"
         If IsAssigned(Atividade)
            Then Moveto [Codigo            ] Example "Pessoa"
            Else Moveto [Codigo            ] TypeIn "~VSDGDESTINAT.." 
         EndIf 
         Moveto [Situacao                  ] TypeIn "Not C"
   
         Moveto [Codigo do Documento       ] TypeIn "~VSDGTPDOCTO.."
         Moveto [Codigo do Representante   ] TypeIn "~VSDGREPRESEN.."
         Moveto [Cidade                    ] TypeIn CIDADE
         Moveto [UF                        ] TypeIn "~VSDGESTADO.."
         switch
           case ListaRegra_VSDGDESTIN_Ativo  : Moveto [Codigo da Destinacao] TypeIn ListaRegra_VSDGDESTIN
           otherwise                         : Moveto [Codigo da Destinacao] TypeIn "~VSDGDESTIN.."
         endswitch
         Moveto [Tipo Movimento Estoque ] TypeIn "~VSDGTPMOVDESTIN.."

         switch
          case VSDGOPDTESI="1" : Moveto [Data de Emissao] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
          case VSDGOPDTESI="2" : Moveto [Data de Saida  ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
          case VSDGOPDTESI="3" : Moveto [Data_Inclusao  ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
         endswitch
         
         Moveto [Condicao de Pagamento  ] TypeIn "~VSDGCONDPGTO.."
         Moveto [Forma de Pagamento     ] TypeIn "~VSDGTPPAGTO.."

         Moveto [Numero_Carregamento    ] TypeIn "~VSDGNCARREG.."
         Moveto [Placa do Veiculo       ] TypeIn "~VSDGPLACAVEICULO.."

         Switch
            case VSDGSITUACAONOTA="NORMAL"                 : Moveto [Situacao                ] TypeIn "Not C"
                                                             Moveto [Descricao da Destinacao ] TypeIn "Not ..INUT.."
                                                                            
            case VSDGSITUACAONOTA="CANCELADA"              : Moveto [Situacao                ] TypeIn "C"
                
            case VSDGSITUACAONOTA="CANCELADA+DENEGADA"     : Moveto [Situacao                ] TypeIn "C"
                                                             Moveto [Sistema Gerador         ] TypeIn "DN"
                                                             
            case VSDGSITUACAONOTA="CANCELADA+EXTEMPORANEA" : Moveto [Situacao                ] TypeIn "C"
                                                             Moveto [Sistema Gerador         ] TypeIn "EX"

            case VSDGSITUACAONOTA="INUTILIZADA"            : Moveto [Descricao da Destinacao ] TypeIn "..INUT.."
         endSwitch
         
         {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"Notai" Enter check
         Moveto [Codigo da Empresa      ] Example "Empresa"
         Moveto [Numero do Documento    ] Example "Docto"
         Moveto [Serie do Documento     ] Example "Serie"
         Moveto [Codigo do Item         ] Example "cite" TypeIn ", ~VSDGITEM.."
         Moveto [Situacao_Item          ] TypeIn "Not C"
         Do_it!
         ClearAll
                 
         tabnotaec="\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEC"
         
         Copy  "Answer" "\\sistemas\\vendas\\Temp"  
                
         CoEdit tabnotaec,"Temp","Answer"
          
         Scan
         
             if [Tipo Movimento Estoque]="S" and search("TROCA",[Descricao da Destinacao])>0
                then 
                     copytoarray reg
                     
                     Moveto tabnotaec
                     Moveto [Codigo]
                     Locate IndexOrder By "NotaEC01" [Answer->Codigo],[Answer->Numero do Documento],[Answer->Serie do Documento]  
                     If RetVal
                        then If [Codigo da Empresa]=[Answer->Codigo da Empresa] and
                                [Tipo de Operacao ] ="D"
                                then  
                                      cfo     = [Cfo                   ]              
                                      valor   = [Valor Mercadoria      ]
                                      
                                      moveto "Temp"
                                      End down
                                      copyfromarray reg
                                      
                                      [Temp->Cfo                    ]=cfo              
                                      [Temp->Descricao da Destinacao]=[Temp->Descricao da Destinacao]+"*DEVOL"
                                      [Temp->Valor Nota Fiscal      ]=valor * -1
                                      [Temp->Valor Mercadoria       ]=Blanknum()
                                      [Temp->Numero do Pedido       ]="N.Entr"
                             endif
                     EndIf
             endif
              
             Moveto "Answer"
             Skip              
          EndScan     
          Do_It!
          ClearAll
          
          If IsAssigned(Atividade)
             Then Delete Atividade
          EndIf  
          
          Rename "Temp" "Answer"

EndIf

EndProc  ; (Seleciona)

;*******************************************************************************
;* Rotina Ajusta Dados                                                         *
;*******************************************************************************
Proc RM_0150C_Ajusta_Dados()
ClearAll

Sort Tabela On "Codigo da Empresa", "Numero do Documento", "Serie do Documento","Item do Documento"

CDEMPR="****"
NDOCTO="****"
SDOCTO="****"
VRNF  =0         

CoEdit Tabela
Scan
 If [Codigo da Empresa  ]<>CDEMPR Or
    [Numero do Documento]<>NDOCTO Or
    [Serie do Documento ]<>SDOCTO Or
    [Valor Nota Fiscal  ]<>VRNF     
    Then CDEMPR=[Codigo da Empresa  ]
         NDOCTO=[Numero do Documento]
         SDOCTO=[Serie do Documento ]
         VRNF  =[Valor Nota Fiscal  ] 
    Else [Valor Nota Fiscal]=BlankNum()
 EndIf
EndScan
Do_It!
ClearAll

EndProc

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
Proc RM_0150C_Principal()

AGUARDE("Aguarde, gerando o relat¢rio")
Tabela=Cria_Temp(PrivDir())

Monta_Dir_Trab(VSDGDTINI,VSDGDTFIM)
While Novo_Dir_Trab()
  If IsTable("Answer")     Then Delete "Answer" EndIf
  RM_0150C_Seleciona()
  If Not IsTable("Answer") Then Loop EndIf
  If IsTable(Tabela)
     Then Add "Answer" Tabela
     Else Rename "Answer" Tabela
  EndIf
EndWhile

If IsEmpty(Tabela)
   Then 
        MENSAGEM("N„o existem registros a processar")
   else
        RM_0150C_Ajusta_Dados()
        Switch
          case VSDGCODMODELO="2N"   : CopyReport "\\Base\\Sistemas\\Vendas\\Rm_2003" "1" Tabela "R"
          case VSDGCODMODELO="2NI"  : CopyReport "\\Base\\Sistemas\\Vendas\\Rm_2003" "R" Tabela "R" 
        endSwitch
        IMPRIREL(Tabela,"R")
EndIf
Delete Tabela

EndProc

;-- Chamada principal ----------------------------------------------------------
RM_0150C_Principal()

Release Vars Tabela
Release Procs RM_0150C_Principal, RM_0150C_Seleciona, RM_0150C_Ajusta_Dados
