;** Rm_0025  *******************************************************************
;* Relatorio de Notas Fiscais Transportadora/Itens                             *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 03/10/2003 por Karen Lauar Nery
;Ultima Alteracao: 14/03/2008 por Nikolas
;Motivo Alteracao: Inclusao escolha da destinacao
;Ultima Alteracao: 03/02/2010 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes somente dados NotaC
;Ultima Alteracao: 05/07/2011 por Karina Andrade
;Motivo Alteracao: Filtro Frete por Conta
;Ultima Alteracao: 23/08/2011 por Bruno Carvalho
;Motivo Alteracao: Adicionado filtro por Area (Ponto.Com)
;Ultima Alteracao: 10/07/2012 por Bruno Carvalho
;Motivo Alteracao: Adicionado filtro na ask do NotaI "Situacao_Item"
;Ultima Alteracao: 25/11/2013 por Bruno Carvalho
;Motivo Alteracao: Ajustes no report "5" e "6" onde foi adicionado coluna de pedidos  
;Ultima Alteracao: 25/03/2014 por Andrey Fillipe
;Motivo Alteracao: Ajustes no report "5" e "6" onde foi adicionado coluna de N§ Volume  
;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: 14/03/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes op‡Æo de datas               
;Ultima Alteracao: 17/03/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes no processo ao informar op‡Æo por data de emissÆo ou saida
;Ultima Alteracao: 28/02/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes report com quebra apenas de transportadora
;Ultima Alteracao: 28/01/2020 por Bruno Carvalho                                     
;Motivo Alteracao: Adicionado scripts "RM_0025B" (1O), "RM_0025C" (2O), "RM_0025D" (3O), "RM_0032" (2P), "RM_0025E" (2S) neste script "RM_0025" (59)
;Ultima Alteracao: 10/02/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes TG_DESTIN, TG_TPMOVDESTIN                  
;Ultima Alteracao: 10/02/2020 por Bruno Carvalho
;Motivo Alteracao: Ajustes de padroniza‡Æo nos campos [TG_CIDADE] e [TG_ESTADO]
;Ultima Alteracao: 12/05/2020 por Bruno Carvalho
;Motivo Alteracao: Adicionado coluna [Valor Mercadoria Liquido] e totalizador 

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

If IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC")
   Then {Ask} {\\Sistemas\\Cadastro\\Destinat}
        Moveto [Codigo                 ] Example "clie" TypeIn ", ~VSDGDESTINAT.."
        If CIDADE<>""
           Then Moveto [Cidade         ] TypeIn CIDADE
        EndIf   
        Moveto [UF                     ] TypeIn "~VSDGESTADO.."
        Moveto [Codigo da Area         ] Check TypeIn "~VSDGAREA.. , as UF"
        Moveto [Descricao da Area      ] Check TypeIn "as Cidade"
        {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC" Enter Check
        Moveto [Codigo da Empresa       ] Example "cemp" TypeIn " ,~VSDGEMPRESA.."
        If IsBlank(VSDGNCARREG)
            Then 
                 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
           Else Moveto [Numero_Carregamento] TypeIn "~VSDGNCARREG.."        
        EndIf 
        Moveto [Numero do Documento     ] Example "num"
        Moveto [Serie do Documento      ] Example "ser"    
        Moveto [Codigo                  ] Example "clie"
        Moveto [Codigo da Transportadora] TypeIn "~VSDGTRANSP.."
        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.."
        Moveto [Frete por Conta         ] TypeIn " ~VSDGFRETEPC.."        
        Moveto [Situacao                ] TypeIn "Not C"
        Moveto [Codigo do Representante ] TypeIn "~VSDGREPRESEN.."
        Moveto [Placa do Veiculo        ] TypeIn "~VSDGVEICULO.."
        If VSDGCODMODELO="01"
           Then {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaI" Enter Check
                 Moveto [Codigo da Empresa       ] Example "cemp"
                 Moveto [Numero do Documento     ] Example "num"
                 Moveto [Serie do Documento      ] Example "ser"
                 Moveto [Codigo do Item          ] Example "cit"
                 Moveto [Situacao_Item           ] TypeIn "Not C"
                 Do_It!
                 ClearAll
                 
                 {Ask} {Answer} Check                 
                 Moveto [Codigo do Item           ] Example "cit"
                 {Ask} {\\Sistemas\\Estoque\\Itens}
                 Moveto [Codigo do Item           ] Example "cit"
                 Moveto [Fator Conversao Embalagem] Check
                 Moveto [Unidade Embalagem        ] Check
        EndIf
        Do_It!
        ClearAll
        
EndIf
EndProc ; (Seleciona)

;*******************************************************************************
;* 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: ListaRegra_F2()
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch             
            Case Campo="TG_EMPRESA"        : Campo="NO"
            Case Campo="TG_DESTINAT"       : Campo="TG_EMPRESA"   
            Case Campo="TG_CIDADE"         : Campo="TG_DESTINAT"
            Case Campo="TG_ESTADO"         : Campo="TG_CIDADE"
            Case Campo="TG_TRANSP"         : Campo="TG_ESTADO"    
            Case Campo="TG_REPRESEN"       : Campo="TG_TRANSP"    
            Case Campo="TG_DESTIN"         : Campo="TG_REPRESEN"  
            Case Campo="TG_TPMOVDESTIN"    : Campo="TG_DESTIN"
            Case Campo="TG_OPDTESI"        : Campo="TG_TPMOVDESTIN"  
            Case Campo="TG_DTINI"          : Campo="TG_OPDTESI"    
            Case Campo="TG_DTFIM"          : Campo="TG_DTINI"     
            Case Campo="TG_AREA"           : Campo="TG_DTFIM"    
            Case Campo="TG_VEICULO"        : Campo="TG_AREA"      
            Case Campo="TG_NCARREG"        : Campo="TG_VEICULO"   
            Case Campo="TG_FRETE_PC"       : Campo="TG_NCARREG"   
            Case Campo="TG_CODMODELO"      : Campo="TG_FRETE_PC"
            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_DESTINAT" 
                    Case Campo="TG_DESTINAT"      : Campo="TG_CIDADE"   
                    Case Campo="TG_CIDADE"        : Campo="TG_ESTADO"
                         If Upper(VSDGCIDADE)="TODAS"
                            Then CIDADE=""
                            Else CIDADE=VSDGCIDADE
                         EndIf
                    Case Campo="TG_ESTADO"        : Campo="TG_TRANSP"        
                    Case Campo="TG_TRANSP"        : Campo="TG_REPRESEN" 
                    Case Campo="TG_REPRESEN"      : Campo="TG_DESTIN"   
                    Case Campo="TG_DESTIN"        : Campo="TG_TPMOVDESTIN"
                    Case Campo="TG_TPMOVDESTIN"   : Campo="TG_OPDTESI"
                    Case Campo="TG_OPDTESI"        : Campo="TG_DTINI" 
                    Case Campo="TG_DTINI"         : Campo="TG_DTFIM"    
                    Case Campo="TG_DTFIM"         : Campo="TG_AREA"
                    Case Campo="TG_AREA"          : Campo="TG_VEICULO"  
                    Case Campo="TG_VEICULO"       : Campo="TG_NCARREG"  
                    Case Campo="TG_NCARREG"       : Campo="TG_FRETE_PC" 
                    Case Campo="TG_FRETE_PC"      : Campo="TG_CODMODELO"   
                    Case Campo="TG_CODMODELO"     : Campo="YES"
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf

Switch
  Case Campo=""  :
     MSG_CAMPO=""
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("02  Por Transportadora/DtSaida/Documentos")                ;RM_0025
ModeloRelatoriosAdd("02B Por Transportadora/DtSaida/Documentos , sem Valor")    ;RM_0025
ModeloRelatoriosAdd("01  Por Transportadora/DtSaida/Documentos + Itens")        ;RM_0025
ModeloRelatoriosAdd("Separator")
ModeloRelatoriosAdd("1O  Por DtEmissÆo/Documentos - Conferˆncia de Baixas")     ;RM_0025B
ModeloRelatoriosAdd("2O  Por Transportadora/DtEmissÆo/Documento - A Pagar/Pago");RM_0025C
ModeloRelatoriosAdd("3O  Por DtEmissÆo/Documentos + Cidade")                    ;RM_0025D
ModeloRelatoriosAdd("Separator")
ModeloRelatoriosAdd("2PA Por Transportadora/Documentos, Placa de Ve¡culo + Itens");RM_0032
ModeloRelatoriosAdd("2PB Por Transportadora/Documentos, Placa de Ve¡culo")        ;RM_0032
ModeloRelatoriosAdd("Separator")
ModeloRelatoriosAdd("2EA Por Transportadora/Documentos            - Frete/Calculo");RM_0025E
ModeloRelatoriosAdd("2EB Por Destina‡Æo/Transportadora/Documentos - Frete/Calculo");RM_0025E
ModeloRelatoriosAdd("Fim")
                           
EndProc ;ModeloRelatoriosCarregaLista

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

VSDGAREA         =""
VSDGNOMAREA      =""
VSDGEMPRESA      =""
VSDGNOMEMP       =""
VSDGDESTINAT     =""
VSDGNOMDEST      =""
VSDGESTADO       =""
VSDGNOMESTADO    =""
VSDGCIDADE       =""
VSDGREPRESEN     =""
VSDGNOMREPR      =""
VSDGDESTIN  =""
VSDGTPMOVDESTIN=""
VSDGTRANSP       =""
VSDGDTINI        =BlankDate()
VSDGDTFIM        =BlankDate()
VSDGOPDTES       =""
VSDGNOMOPDTES    =""
VSDGVEICULO      =""
VSDGNCARREG      =Blanknum()
VSDGNOMNCARREG   =""
VSDGFRETEPC      =Blanknum()

ListaRegra_Funcao("ListaRegra_TGAtivado","[TG_DESTIN]")

ModeloRelatoriosCarregaLista()

While True

  ShowDialog "Rela‡„o de Notas Fiscais - Transportadora" Proc "SD_Dialog"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC","TAB",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140, -60  
   @ 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 "Pessoa"  For "TG_DESTINAT"
    Accept @ 03,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_DESTINAT"  To VSDGDESTINAT
    Accept @ 03,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMDEST" To VSDGNOMDEST        

    Label  @ 04,00 "Cidade"  For "TG_CIDADE"
    Accept @ 05,01 Width 27 "A20"  Picture "!*!" Tag "TG_CIDADE"  To VSDGCIDADE
                                   
    Label  @ 04,27 "Estado"  For "TG_ESTADO"
    Accept @ 05,28 Width 06 "A2"  Picture "!*!" Tag "TG_ESTADO" To VSDGESTADO
    
    Label  @ 06,00 "Transportadora"  For "TG_TRANSP"
    Accept @ 07,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_TRANSP"    To VSDGTRANSP
    Accept @ 07,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMTRANSP" To VSDGNOMTRANSP
    
    Label  @ 08,00 "Representante"  For "TG_REPRESEN"
    Accept @ 09,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_REPRESEN" To VSDGREPRESEN
    Accept @ 09,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMREPR"  To VSDGNOMREPR
                                    
    Label  @ 10,00 "Destinacao"  For "TG_DESTIN"
    Accept @ 11,02 Width 06 "A3"  Picture "[&,#][#*#]" Tag "TG_DESTIN"    To VSDGDESTIN
    Accept @ 11,09 Width 21 "A30" Picture "!*!" Tag "TG_NOMDESTIN" To VSDGNOMDESTIN

    Label  @ 10,28 "TpMov" For "TG_TPMOVDESTIN"
    Accept @ 11,30 Width 04 "A1"  Picture "E,S" Tag "TG_TPMOVDESTIN" To VSDGTPMOVDESTIN

    Label  @ 12,00 "Op‡äes de Datas" For "TG_OPDTESI"
    Accept @ 13,04 Width 04 "A1"  Picture "1,2,3"  Tag "TG_OPDTESI" To VSDGOPDTESI
    Accept @ 13,09 Width 25 "A18" Picture "!*!"  Tag "TG_NOMOPDTES" To VSDGNOMOPDTES

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

    Label  @ 00,35 "Area"  For "TG_AREA"
    Accept @ 01,36 Width 07 "A2"  Picture "#*#" Tag "TG_AREA"     To VSDGAREA
    Accept @ 01,44 Width 25 "A20" Picture "!*!" Tag "TG_NOMAREA"  To VSDGNOMAREA    
                        
    Label  @ 02,35 "Placa do Ve¡culo"  For "TG_VEICULO"
    Accept @ 03,36 Width 33 "A8"  Picture "!*!" Tag "TG_VEICULO"   To VSDGVEICULO
    
    Label  @ 04,35 "Carregamento" For "TG_NCARREG"
    Accept @ 05,36 Width 09  "A6"  Picture "#*#" Tag "TG_NCARREG"    To VSDGNCARREG
    Accept @ 05,44 Width 25 "A20" Picture "!*!" Tag "TG_NOMNCARREG" To VSDGNOMNCARREG
    
    Label  @ 06,35 "Frete por Conta" For "TG_FRETE_PC"
    Accept @ 07,39 Width 04 "A1"  Picture "#" Tag "TG_FRETE_PC" To VSDGFRETEPC
    Accept @ 07,44 Width 25 "A25" Picture "!*!" Tag "TG_NOMFRETE_PC" To VSDGNOMFRETEPC    
    
    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         

  If IsBlank(VSDGDTFIM)
     Then Mensagem("Data Final Invalida !")
          Loop
  EndIf

  DISPOSITIVO()
  If OK=""  Then Loop EndIf

  If VSDGCODMODELO="01"  Or
     VSDGCODMODELO="02"  Or
     VSDGCODMODELO="02B"  
     Then 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
            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")
                  Delete Tabela
                  Loop
          EndIf
          
          Switch
            case VSDGCODMODELO="01"  :
              {Ask} TypeIn Tabela Enter
              Moveto [Numero do Documento] Check
              Do_It!
              ClearAll
                        
              View Tabela          
              Coedit "Answer"
              Scan
                Barra(NRecords("Answer"), RecNo())
                Aguarde("Aguarde, ajustando dados: 1/2 "+BARRA_STRING)
                
                Achou=True
                Moveto Tabela
                Moveto [Numero do Documento]            
                Locate [Answer->Numero do Documento] 
                While [Numero do Documento] = [Answer->Numero do Documento] 
                   [Numero de Parcelas] = BlankNum()
                   If [Numero de Volumes]<>BlankNum()
                      Then If Achou
                              Then Achou = False
                                   [Numero de Parcelas] = [Numero de Volumes]
                                   UnLockRecord
                           EndIf                            
                   EndIf
                   Skip
                   If Eot() Then QuitLoop EndIf              
                EndWhile
                Moveto "Answer"            
              EndScan                       
              Do_It!
              ClearAll
              Delete "Answer"                              
                   
              Sort Tabela on "Codigo da Empresa","Numero do Documento","Serie do Documento","Item do Documento"
              ClearAll
                                  
              empant="***"
              docant="***"
              serant="***"
              Edit Tabela
              Scan
                Barra(NRecords(Tabela), RecNo())
                Aguarde("Aguarde, ajustando dados: 2/2 "+BARRA_STRING)
                
                If [Codigo da Empresa  ]<>empant Or
                   [Numero do Documento]<>docant Or
                   [Serie do Documento ]<>serant
                   Then empant=[Codigo da Empresa  ]
                        docant=[Numero do Documento]
                        serant=[Serie do Documento ]
                        [Peso Bruto              ]=1
                   Else [Peso Liquido            ]=BlankNum()
                        [Peso Bruto              ]=BlankNum()
                        [Valor Mercadoria Liquido]=BlankNum()
                EndIf
              EndScan
              Do_It!
              ClearAll
              
              CopyReport "\\Base\\Sistemas\\Vendas\\Rm_2000C" "6" Tabela "R"
            case VSDGCODMODELO="02"  : CopyReport "\\Base\\Sistemas\\Vendas\\Rm_2000C"  "5" Tabela "R"
            case VSDGCODMODELO="02B" : CopyReport "\\Base\\Sistemas\\Vendas\\Rm_2000C" "R" Tabela "R"         
          EndSwitch
          IMPRIREL(Tabela,"R")
          Delete Tabela
  EndIf    
  Switch
    case VSDGCODMODELO="1O"   : Play "RM_0029B"
    case VSDGCODMODELO="2O"   : Play "RM_0029C"
    case VSDGCODMODELO="3O"   : Play "RM_0029D"    

    case VSDGCODMODELO="2PA" Or 
         VSDGCODMODELO="2PB"  : Play "RM_0029P"

    case VSDGCODMODELO="2EA" Or
         VSDGCODMODELO="2EB"  : Play "RM_0029E"

  EndSwitch
EndWhile
ClearAll
Release Vars All
Release Procs All
