;** RM_0150A *******************************************************************
;* Relacao de Notas Fiscais - Diversos Modelos                                 *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 05/02/2020 por Anivel Augusto Rodrigues
;Ultima Alteracao: 05/02/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes agrupado RM_0150
;Ultima Alteracao: 05/02/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes substituido RM_0021, RM_0030, RM_0020
;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: 21/02/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes na ASK p/ otimiza‡Æo ao linkar com a tabela itens
;Ultima Alteracao: 23/03/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes modelo 1C, RM_0046
;Ultima Alteracao: 23/07/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes filtro referencia
 
;*******************************************************************************
;* Rotina p/ Selecionar e Ordernar Registros                                   *
;*******************************************************************************
Proc RM_0150A_Seleciona()
ClearAll

If IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC") And
   IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaI")
   Then
        {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"
 
         Moveto [Codigo do Documento    ] TypeIn "~VSDGTPDOCTO.."
         Moveto [Codigo                 ] TypeIn "~VSDGDESTINAT.."
         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

         if VSDGCODMODELO="02C" 
            then
                 moveto [Codigo da Destinacao   ] CtrlBackspace
                 moveto [Descricao da Destinacao] CtrlBackspace
                 Moveto [Sistema Gerador        ] CtrlBackspace
                 moveto [Descricao da Destinacao] typein "..CONSIG.."
                 moveto [Tipo Movimento Estoque ] 
                 moveto [Situacao               ] CtrlBackspace typeIn "Not C"
                 moveto [Data de Acerto         ]               TypeIn "Blank"
         endif     
         Do_It!
         ClearAll
            
         if VSDGCODMODELO="01I" Or 
            VSDGCODMODELO="01C" Or 
            VSDGCODMODELO="02I" Or 
            VSDGCODMODELO="03C" Or 
            VSDGCODMODELO="02I" Or 
            VSDGCODMODELO="04"  Or 
            VSDGCODMODELO="05I" Or 
            VSDGCODMODELO="1LI" Or
            VSDGCODMODELO="67"  
            then {Ask} {Answer} Check
                 Moveto [Codigo da Empresa      ] Example "Empresa"
                 Moveto [Numero do Documento    ] Example "Docto"
                 Moveto [Serie do Documento     ] Example "Serie"
                 {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         ] TypeIn "~VSDGITEM.."
                 Moveto [Situacao_Item          ] TypeIn "Not C"
                 Do_It!
                 ClearAll
                 
                 {Ask} TypeIn "\\Sistemas\\Estoque\\Itens" Enter
                 Moveto [Codigo do Item           ] Example "cite"
                 Moveto [Codigo da Marca          ] TypeIn "~VSDGMARCA.."
                 Moveto [Referencia               ] TypeIn "~VSDGREFERENCIA.."    
                 {Ask} {Answer} Check
                 Moveto [Codigo do Item           ] Example "cite"                                                        
                 Do_It!
                 ClearAll
         Endif         
EndIf

EndProc   ; (Seleciona)

;*******************************************************************************
;* Rotina p/ Selecionar os Vencimentos                                         *
;*******************************************************************************
Proc RM_0150A_Selecionav()

Copy Tabela Tabela1

{Ask} TypeIn Tabela Enter
Moveto [Codigo da Empresa  ] Example "codemp"
Moveto [Numero do Documento] Example "numdoc"
Moveto [Serie do Documento ] Example "serdoc"

{Ask} {NotaV} Check
Moveto [Codigo da Empresa  ] Example "codemp"
Moveto [Numero do Documento] Example "numdoc"
Moveto [Serie do Documento ] Example "serdoc"
Do_It!
ClearAll

View "Answer"
Coedit Tabela1
Scan

  [Observacao na Nota Fiscal]=""

  CODEMP = [Codigo da Empresa]
  NUMDOC = [Numero do Documento]
  SERDOC = [Serie do Documento]
  
  Moveto "Answer"
  Moveto [Codigo da Empresa]
  Locate CODEMP,NUMDOC,SERDOC
  If RetVal
     Then  AUXILIAR = ""
           NCHAR = 0
           While CODEMP=[Codigo da Empresa  ] And
                 NUMDOC=[Numero do Documento] And
                 SERDOC=[Serie do Documento ] 
                 If AUXILIAR<>""
                    Then AUXILIAR = AUXILIAR + " | "
                         NCHAR=NCHAR+2
                 EndIf   
                 AUXILIAR = AUXILIAR + Format("D13",[Data])+" "+[Forma de Pagamento]+" "+LTrim(Format("W10.2,EIC",[Valor])) ;22 Caracteres
                 NCHAR=NCHAR+22
                 Skip
                 If Eot() Then QuitLoop EndIf
           EndWhile

           Moveto Tabela1
           Moveto [Observacao na Nota Fiscal]
           []=""
           []=AUXILIAR
           UnLockRecord

  EndIf

  Moveto Tabela1
EndScan
Do_It!
ClearAll

EndProc   ; (Selecionav)


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

if VSDGCODMODELO="01I" Or 
   VSDGCODMODELO="01C" Or 
   VSDGCODMODELO="02I" Or 
   VSDGCODMODELO="03C" Or 
   VSDGCODMODELO="02I" Or 
   VSDGCODMODELO="04"  Or 
   VSDGCODMODELO="05I" Or 
   VSDGCODMODELO="1LI" Or
   VSDGCODMODELO="67"  
   then Sort Tabela On "Codigo da Empresa", "Numero do Documento", "Serie do Documento","Item do Documento"
   else Sort Tabela On "Codigo da Empresa", "Numero do Documento", "Serie do Documento"
endif

CDEMPR="****"
NDOCTO="****"
SDOCTO="****"

CoEdit Tabela
Scan

 If [Codigo da Empresa  ]<>CDEMPR Or
    [Numero do Documento]<>NDOCTO Or
    [Serie do Documento ]<>SDOCTO
    Then CDEMPR=[Codigo da Empresa  ]
         NDOCTO=[Numero do Documento]
         SDOCTO=[Serie do Documento ]
         [Numero Lancamento Cheque]=1
    Else 
         [Valor Nota Fiscal       ]=BlankNum()
         [Valor Mercadoria        ]=BlankNum()
         [Valor Mercadoria Liquido]=BlankNum()
         [Peso Liquido            ]=BlankNum()
 EndIf

 If [Situacao]="C"
    Then If Search("INUT",[Descricao da Destinacao])>0
            Then [Descricao da Destinacao ]="** INUTILIZADA **"
            Else [Descricao da Destinacao ]="** CANCELADA **"        
        EndIf
        If [Sistema Gerador] = "DN" Then [Descricao da Destinacao ]="** DENEGADA **"   EndIf
        If [Sistema Gerador] = "EX" Then [Descricao da Destinacao ]="**CANC.EXTEMP**"  EndIf    
        [Valor Nota Fiscal       ]=BlankNum()
        [Valor Mercadoria        ]=BlankNum()
        [Valor Mercadoria Liquido]=BlankNum()
 EndIf
 
EndScan
Do_It!
ClearAll

EndProc

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
Proc RM_0150A_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_0150A_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_0150A_Ajusta_Dados()
        
        If VSDGCODMODELO="02V" Or
           VSDGCODMODELO="03"  Or
           VSDGCODMODELO="03B" Or
           VSDGCODMODELO="03C" Or
           VSDGCODMODELO="03D"
           Then Tabela1=Cria_Temp(PrivDir())
                RM_0150A_Selecionav()
                Rename Tabela1 Tabela
        EndIF        
               
        Switch
          case VSDGCODMODELO="01"  : CopyReport "\\Base\\Sistemas\\Vendas\\Rm_2001"  "10" Tabela "R"
          case VSDGCODMODELO="01I" : CopyReport "\\Base\\Sistemas\\Vendas\\Rm_2001"  "9"  Tabela "R"
      
          case VSDGCODMODELO="01B" : CopyReport "\\Base\\Sistemas\\Vendas\\Rm_2001b" "3"  Tabela "R"
          case VSDGCODMODELO="01C" : CopyReport "\\Base\\Sistemas\\Vendas\\Rm_2001b" "2"  Tabela "R"
          
          case VSDGCODMODELO="02"  : CopyReport "\\Base\\Sistemas\\Vendas\\Rm_2001"  "1"  Tabela "R"
          case VSDGCODMODELO="02I" : CopyReport "\\Base\\Sistemas\\Vendas\\Rm_2001"  "R"  Tabela "R"
          case VSDGCODMODELO="02V" : CopyReport "\\Base\\Sistemas\\Vendas\\Rm_2006"  "R"  Tabela "R"
          case VSDGCODMODELO="02C" : CopyReport "\\Base\\Sistemas\\Vendas\\Rm_2001"  "1"  Tabela "R"
      
          case VSDGCODMODELO="04"  : CopyReport "\\Base\\Sistemas\\Vendas\\Rm_1999"  "4"  Tabela "R"
          case VSDGCODMODELO="67"  : CopyReport "\\Base\\Sistemas\\Vendas\\Rm_2000"  "7"  Tabela "R"
          
          case VSDGCODMODELO="05"  : CopyReport "\\Base\\Sistemas\\Vendas\\Rm_2001"  "3"  Tabela "R"
          case VSDGCODMODELO="05O" : CopyReport "\\Base\\Sistemas\\Vendas\\Rm_2001b" "1"  Tabela "R"
          case VSDGCODMODELO="05I" : CopyReport "\\Base\\Sistemas\\Vendas\\Rm_2001"  "2"  Tabela "R"
      
          case VSDGCODMODELO="1L"  : CopyReport "\\Base\\Sistemas\\Vendas\\Rm_2001" "11"  Tabela "R"
          case VSDGCODMODELO="1LI" : CopyReport "\\Base\\Sistemas\\Vendas\\Rm_2001" "12"  Tabela "R"
      
          case VSDGCODMODELO="03C" : CopyReport "\\Base\\Sistemas\\Vendas\\Rm_2001b" "R"  Tabela "R" 
          case VSDGCODMODELO="03D" : CopyReport "\\Base\\Sistemas\\Vendas\\Rm_2001b" "4"  Tabela "R"

          case VSDGCODMODELO="1C"  : CopyReport "\\Base\\Sistemas\\Vendas\\Rm_2000" "11" Tabela "R"
          
        endSwitch
        IMPRIREL(Tabela,"R")  
EndIf
Delete Tabela

EndProc

;-- Chamada principal ----------------------------------------------------------
RM_0150A_Principal()

Release Vars Tabela
Release Procs RM_0150A_Principal, RM_0150A_Seleciona, RM_0150A_Selecionav, RM_0150A_Ajusta_Dados
