;** Rm_1511 ********************************************************************
;* Acerto da Industrializa‡Æo                                                  *
;*******************************************************************************
;Desenvolvido    : 24/07/2020 por Anivel Augusto Rodrigues
;Ultima Alteracao:   /  /     por 
;Motivo Alteracao: 

;*******************************************************************************
;* Rotina p/ Ajustar Registros                                                 *
;*******************************************************************************
Proc Seleciona_Dados()
ClearAll                          

{Ask} TypeIn "\\Sistemas\\Vendas\\NotaC" Enter
Moveto [Codigo da Empresa        ] Check TypeIn "~VSDGEMPRESA.."
Moveto [Numero do Documento      ] Check
Moveto [Serie do Documento       ] Check
Moveto [Nome Fantasia Empresa    ] Check
Moveto [Tipo do Documento        ] Check
Moveto [Codigo do Documento      ] Check
Moveto [Data de Emissao          ] Check TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
Moveto [Razao Social             ] Check
Moveto [Codigo                   ] Check TypeIn "~VSDGDESTINAT.."
Moveto [Codigo do Representante  ] Check
Moveto [Nome Fantasia Represent  ] Check
Moveto [Comissao do Representante] Check
Moveto [Descricao da Destinacao  ] Check TypeIn "..INDUST.."
Moveto [Tipo Movimento Estoque   ] Check
Moveto [Placa do Veiculo         ] Check
Moveto [Valor Nota Fiscal        ] Check
Moveto [UF Veiculo               ] Check
Moveto [Codigo da Tabela         ] Check
Moveto [Situacao                 ] Check TypeIn "Not C"
Moveto [Tipo de Pagamento        ] Check
Moveto [Data de Acerto           ] Check TypeIn "Blank"
Moveto [Chave_Acesso_NFe         ] check
Do_It!
ClearAll

If Not IsEmpty("Answer")
   Then Coedit Tabela,"Answer"
        Scan
          Moveto Tabela
          End Down
          [Codigo da Empresa        ]=[Answer->Codigo da Empresa      ]
          [Numero do Documento      ]=[Answer->Numero do Documento    ]
          [Serie do Documento       ]=[Answer->Serie do Documento     ]
          [Nome Fantasia Empresa    ]=[Answer->Nome Fantasia Empresa  ]
          [Tipo do Documento        ]=[Answer->Tipo do Documento      ]
          [Codigo do Documento      ]=[Answer->Codigo do Documento    ]
          [Data de Emissao          ]=[Answer->Data de Emissao        ]
          [Razao Social             ]=[Answer->Razao Social           ]
          [Codigo                   ]=[Answer->Codigo                 ]
          [Codigo do Representante  ]=[Answer->Codigo do Representante]
          [Nome Fantasia Represent  ]=[Answer->Nome Fantasia Represent]
          [Comissao do Representante]=[Answer->Comissao do Representante]
          [Descricao da Destinacao  ]=[Answer->Descricao da Destinacao]
          [Tipo Movimento Estoque   ]=[Answer->Tipo Movimento Estoque ]
          [Placa do Veiculo         ]=[Answer->Placa do Veiculo       ]
          [Valor Nota Fiscal        ]=[Answer->Valor Nota Fiscal      ]
          [UF Veiculo               ]=[Answer->UF Veiculo             ]
          [Codigo da Tabela         ]=[Answer->Codigo da Tabela       ]
          [Situacao                 ]=[Answer->Situacao               ]
          [Tipo de Pagamento        ]=[Answer->Tipo de Pagamento      ]
          [Chave_Acesso_NFe         ]=[Answer->Chave_Acesso_NFe       ]
          UnlockRecord

          Moveto "Answer"
        EndScan 
        Do_It!
        ClearAll     
endif      

{Ask} TypeIn Tabela Enter
Moveto [Codigo da Empresa      ] Check  
Moveto [Codigo                 ] Check      
Do_It!
ClearAll
TabelaRC=Adiciona_Indice_Temp("Codigo da Empresa,Codigo")

{Ask} TypeIn TabelaRC Enter
Moveto [Codigo da Empresa      ] Example "cemp" 
Moveto [Codigo                 ] Example "cpes"

{Ask} TypeIn "\\Sistemas\\Estoque\\NotaEC" Enter
Moveto [Numero do Lancamento   ] Check 
Moveto [Codigo da Empresa      ] Check Example "cemp" 
Moveto [Tipo de Operacao       ] TypeIn "O or A"
Moveto [Data de Entrada        ] Check TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
Moveto [Numero do Documento    ] Check    
Moveto [Serie do Documento     ] Check
Moveto [Tipo do Documento      ] Check
Moveto [Codigo do Documento    ] Check
Moveto [Codigo                 ] Check Example "cpes" 
Moveto [Valor Nota Fiscal      ] Check
Moveto [Tipo                   ] Check TypeIn "as Tipo Movimento Estoque"
Moveto [CFO                    ] Check typein "1902 or 1903 or 2902 or 2903"
Moveto [Chave_Acesso_NFe       ] check
Do_It!
ClearAll
  
If Not IsEmpty("Answer")
   Then Coedit Tabela,"Answer"
        Scan  
          Moveto Tabela
          End Down
          [Numero do Lancamento   ]=[Answer->Numero do Lancamento]
          [Codigo da Empresa      ]=[Answer->Codigo da Empresa   ] 
          [Numero do Documento    ]=[Answer->Numero do Documento ] 
          [Serie do Documento     ]=[Answer->Serie do Documento  ]
          [Data de Emissao        ]=[Answer->Data de Entrada     ] 
          [Tipo do Documento      ]=[Answer->Tipo do Documento   ] 
          [Codigo do Documento    ]=[Answer->Codigo do Documento ] 
          [Codigo                 ]=[Answer->Codigo              ]
          [Valor Nota Fiscal      ]=[Answer->Valor Nota Fiscal   ]
          [Tipo Movimento Estoque ]="E"
          switch
            case [CFO]="1903" or [CFO]="1903" : [Descricao da Destinacao]="DEVOLUCAO"
            case [CFO]="1902" or [CFO]="1902" : [Descricao da Destinacao]="RETORNOS"
          endswitch
          UnlockRecord

          Moveto "Answer"
        EndScan
        Do_It!
        ClearAll
EndIf
  
Delete TabelaRC

EndProc ; Seleciona_Dados() 

;*******************************************************************************
;* Seleciona lancamentos para exibicao de relatorio e altera‡Æo na data de acerto
;*******************************************************************************
Proc CHAVE()

While True
  CHAVE=1
  End
  Down    
  Moveto [Codigo da Empresa]                         
  SetaCorRegistro("Editar")

  While True

    TECLA = "F4=Imprimir  F8=Atualizar Acerto    "
    AguardaTeclasPadrao()
  
    If RetVal=-33
       Then 
            Echo Normal
            Echo Off                                           
            ShowPopup " Fun‡”es " CENTERED
              "F4 ~I~mprimir                " : " Imprime relat¢rios                            " : "F4",
              "F8 Atualizar Acerto          " : " Atualizar acerto remessa/industrializa‡Æo     " : "F8",
              Separator,
              "~C~ancelar                   " : " Cancelar a Opera‡„o                           " : "CANCELAR"
            EndMenu
            To MenuVar
            
            Echo Off
            If MenuVar="CANCELAR" or MenuVar="Esc"
               Then Loop
               Else RetVal=MenuVar
            EndIf
    EndIf

    Switch
      Case RetVal=-94                : MsgTeclasPadrao()
  
      Case RetVal="F4"               :
        Del
        if Imprimir()
           then CHAVE=3
                return
        endif
        quitloop       
  
      Case RetVal="F8"               : del
                                       play "RM_1511D"        
                                       CHAVE=9
                                       return
  
      Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME" And Field()="Codigo da Empresa":
           While True
             PAGINA(Tabela,"MR")
             If EDITAR<>"S"
                Then If EXCLUIR="S"
                        Then CONFIRMA()
                             If OK="S"
                                Then DEL
                                Else UnLockRecord
                             EndIf
                        Else QuitLoop
                     EndIf
                Else MENSAGEM("Impossivel edi‡„o!")     
             EndIf
             SetaPosForm()
           EndWhile
           QuitLoop

      Case Retval="ESC":  
           del
           CHAVE=9
           Return

    EndSwitch
  EndWhile                      
  
EndWhile
EndProc
  
;*******************************************************************************
;* Processo p/ Recarregar Chave                                                *
;*******************************************************************************
Proc RECARREGA_CHAVE()

Do_It!
ClearAll

CoEdit Tabela
PickForm "F"
SetHighLight Current Record 23 Field 31

CHAVE=1

EndProc ;RECARREGA_CHAVE()

;*******************************************************************************
;*                                                                             *
;*******************************************************************************
Proc Imprimir()
private opimpr, wVSDGOPITE, wVSDGOPACVR, wVSDGOPRET 

Echo Normal
Echo Off                                           
ShowPopup " Fun‡”es " CENTERED
  "~1~ Posi‡Æo da Remessa    " : " Imprime Posi‡Æo da Remessa    " : "1",
  "~2~ Retorno Pendente      " : " Imprime Retorno Pendente      " : "2",
  Separator,
  "~C~ancelar                   " : " Cancelar a Opera‡„o        " : "CANCELAR"
EndMenu
To MenuVar

Echo Off
If MenuVar="CANCELAR" or MenuVar="Esc"
   Then Return False
endif   
opimpr=MenuVar

switch
  case opimpr="1" : 
    TELA = 2
    ShowDialog "Informe os crit‚rios - Remessa/Industrializacao" Proc "SD_Dialog"
    Trigger "OPEN","ARRIVE"
    Key "F1","ENTER","ESC","TAB",
        -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140
     @ 05,12   Height 11 Width 77
                        
      Label  @ 00,01 "Op‡„o de Itens" For "TG_OPITE"
      Accept @ 01,04 Width 04 "A1"  Picture "D,T" Tag "TG_OPITE" To VSDGOPITE
      Accept @ 01,09 Width 30 "A20"  Picture "!*!" Tag "TG_DESCOPITE" To VSDGDESCOPITE
    
      Label  @ 02,01 "Op‡„o de Valores" For "TG_OPACVR"                                 
      Accept @ 03,04 Width 04 "A1"  Picture "C,S" Tag "TG_OPACVR" To VSDGOPACVR
      Accept @ 03,09 Width 30 "A20"  Picture "!*!" Tag "TG_DESCOPACVR" To VSDGDESCOPACVR
      
      Label  @ 04,04 "Op‡„o de Valores no Retorno" For "TG_OPRET"
      Accept @ 05,04 Width 04 "A1"  Picture "1,2" Tag "TG_OPRET" To VSDGOPRET
      Accept @ 05,09 Width 30 "A27"  Picture "!*!" Tag "TG_DESCOPRET" To VSDGDESCOPRET
                                      
      Pushbutton @ 07,22 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
      Pushbutton @ 07,36 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue
    
    EndDialog   
    If RetVal Then play "RM_1511A" endif 
    TELA = 1
     
  case opimpr="2" :
    If Not IsAssigned(VSDGOPITE)  Then VSDGOPITE ="T"  EndIf
    If Not IsAssigned(VSDGOPACVR) Then VSDGOPACVR="C"  EndIf
    If Not IsAssigned(VSDGOPRET)  Then VSDGOPRET ="1"  EndIf
  
    wVSDGOPITE  =VSDGOPITE
    wVSDGOPACVR =VSDGOPACVR 
    wVSDGOPRET  =VSDGOPRET 

    VSDGOPITE  ="T"
    VSDGOPRET  ="1"

    play "RM_1511P"
     
    VSDGOPITE =wVSDGOPITE
    VSDGOPACVR=wVSDGOPACVR 
    VSDGOPRET =wVSDGOPRET 

endswitch

Return True
EndProc 

;*******************************************************************************
;* Seleciona Registros para Emissao de Cheque                                  *
;*******************************************************************************
Proc SELECIONAI()

Sort Tabela On "Codigo da Empresa" , "Data de Emissao" , "Tipo Movimento Estoque" D 

CoEdit Tabela
PickForm "F"
SetHighLight Current Record 23 Field 31
While True
  CHAVE()
  If CHAVE=9 
     Then Do_It!
          QuitLoop     
  EndIf
  If CHAVE=3
     Then RECARREGA_CHAVE()
  EndIf
EndWhile
ClearAll
EndProc

;*******************************************************************************
;* Rotina p/ Selecionar Registros                                              *
;*******************************************************************************
Proc Seleciona()

;****** Remessas - Industrializacao *********************************************
{Ask} TypeIn Tabela Enter
Moveto [Codigo da Empresa      ] Check
Moveto [Codigo                 ] Check
Moveto [Data de Emissao        ] Check
Moveto [Tipo do Documento      ] Check
Moveto [Codigo do Documento    ] Check
Moveto [Serie do Documento     ] Check
Moveto [Descricao da Destinacao] TypeIn "REM..INDUST.."
Moveto [Numero do Documento    ] Check
Moveto [Nome Fantasia Empresa  ] Check
Moveto [Codigo do Representante] Check
Moveto [Nome Fantasia Represent] Check
Moveto [Placa do Veiculo       ] Check
Moveto [UF Veiculo             ] Check
Moveto [Codigo da Tabela       ] Check
Moveto [Razao Social           ] Check
Moveto [Valor Nota Fiscal      ] Check
Moveto [Tipo Movimento Estoque ] TypeIn "S"
Moveto [Chave_Acesso_NFe       ] check
Do_It!
ClearAll

If IsEmpty("Answer")
   Then return false
EndIf
Adiciona_Dados1()

{Ask} TypeIn Tabela Enter
Moveto [Codigo da Empresa      ] Check Example "cemp" 
Moveto [Numero do Documento    ] Check Example "ndoc"
Moveto [Serie do Documento     ] Check Example "sdoc"
Moveto [Tipo do Documento      ] Check
Moveto [Codigo do Documento    ] Check
Moveto [Codigo                 ] Check 
Moveto [Data de Emissao        ] Check 
Moveto [Descricao da Destinacao] TypeIn "REM..INDUST.."
Moveto [Tipo Movimento Estoque ] TypeIn "S"
{Ask} TypeIn "\\Sistemas\\Vendas\\NotaI" Enter
Moveto [Codigo da Empresa      ] Example "cemp"
Moveto [Numero do Documento    ] Example "ndoc"
Moveto [Serie do Documento     ] Example "sdoc"
Moveto [Item do Documento      ] Check
Moveto [Codigo do Item         ] Check
Moveto [Descricao do Item      ] Check
Moveto [Quantidade             ] Check
Moveto [Unidade Fiscal         ] Check
Moveto [Preco Unitario         ] Check
Moveto [Preco Total            ] Check
Moveto [Valor Desconto Total   ] Check    
Moveto [Valor Desconto Item    ] Check    
Moveto [Situacao_Item          ] TypeIn "Not C"
Do_It!
ClearAll
Adiciona_Dados2("INDUSTRIALIZACAO")

;****** Retornos - Industrializacao *********************************************
{Ask} TypeIn Tabela Enter
Moveto [Codigo da Empresa      ] Check Example "cemp"
Moveto [Numero do Documento    ] Check Example "ndoc"
Moveto [Serie do Documento     ] Check Example "sdoc"
Moveto [Tipo do Documento      ] Check
Moveto [Codigo do Documento    ] Check
Moveto [Codigo                 ] Check
Moveto [Data de Emissao        ] Check 
Moveto [Descricao da Destinacao] TypeIn "..RET.. ..INDUST.."
Moveto [Tipo Movimento Estoque ] TypeIn "E"
{Ask} TypeIn "\\Sistemas\\Vendas\\NotaI" Enter
Moveto [Codigo da Empresa      ] Example "cemp"
Moveto [Numero do Documento    ] Example "ndoc"
Moveto [Serie do Documento     ] Example "sdoc"
Moveto [Item do Documento      ] Check
Moveto [Codigo do Item         ] Check
Moveto [Descricao do Item      ] Check
Moveto [Quantidade             ] Check
Moveto [Unidade Fiscal         ] Check
Moveto [Preco Unitario         ] Check
Moveto [Preco Total            ] Check
Moveto [Valor Desconto Total   ] Check   
Moveto [Valor Desconto Item    ] Check    
Moveto [Situacao_Item          ] TypeIn "Not C"
Do_It!
ClearAll
Adiciona_Dados2("RETORNOS")

;****** Devolucoes - Industrializacao  ***********************************************
{Ask} TypeIn Tabela Enter
Moveto [Codigo da Empresa      ] Check Example "cemp" 
Moveto [Numero do Documento    ] Check Example "ndoc"
Moveto [Serie do Documento     ] Check Example "sdoc"
Moveto [Tipo do Documento      ] Check
Moveto [Codigo do Documento    ] Check
Moveto [Codigo                 ] Check     
Moveto [Data de Emissao        ] Check 
Moveto [Descricao da Destinacao] TypeIn "..DEVOL.. ..INDUST.."
Moveto [Tipo Movimento Estoque ] TypeIn "E"
{Ask} TypeIn "\\Sistemas\\Vendas\\NotaI" Enter
Moveto [Codigo da Empresa      ] Example "cemp"
Moveto [Numero do Documento    ] Example "ndoc"
Moveto [Serie do Documento     ] Example "sdoc"
Moveto [Item do Documento      ] Check
Moveto [Codigo do Item         ] Check
Moveto [Descricao do Item      ] Check
Moveto [Quantidade             ] Check
Moveto [Unidade Fiscal         ] Check
Moveto [Preco Unitario         ] Check
Moveto [Preco Total            ] Check
Moveto [Valor Desconto Total   ] Check
Moveto [Valor Desconto Item    ] Check    
Moveto [Situacao_Item          ] TypeIn "Not C"
Do_It!
ClearAll
Adiciona_Dados2("DEVOLUCOES")

;****** Devolucoes - Industrializacao ***************************************************
{Ask} TypeIn Tabela Enter
Moveto [Numero do Lancamento   ] Check Example "nlan"
Moveto [Codigo da Empresa      ] Check Example "cemp" 
Moveto [Numero do Documento    ] Check 
Moveto [Tipo do Documento      ] Check
Moveto [Codigo do Documento    ] Check
Moveto [Codigo                 ] Check 
Moveto [Data de Emissao        ] Check 
Moveto [Descricao da Destinacao] TypeIn "..DEVOL.."
{Ask} TypeIn "\\Sistemas\\Estoque\\NotaEI" Enter
Moveto [Numero do Lancamento   ] Example "nlan"
Moveto [Sequencia do Lancamento] Check
Moveto [Codigo do Item         ] Check
Moveto [Descricao do Item      ] Check
Moveto [Quantidade             ] Check
Moveto [Unidade Fiscal         ] Check
Moveto [Preco Unitario         ] Check
Moveto [Preco Total            ] Check
Moveto [Valor Desconto Total   ] Check 
Moveto [Valor Desconto Unitario] Check typein "As \"Valor Desconto Item\""    
Do_It!
ClearAll

if not isblank("Answer")
   then {Ask}{Answer} typein "Fast"
        Moveto [Valor Desconto Item    ] typein "changeto blank"
        do_it!
        clearall
endif            

Adiciona_Dados2("DEVOLUCOES")

;****** Retornos   - Industrializacao ***************************************************
{Ask} TypeIn Tabela Enter
Moveto [Numero do Lancamento   ] Check Example "nlan"
Moveto [Codigo da Empresa      ] Check Example "cemp" 
Moveto [Numero do Documento    ] Check 
Moveto [Tipo do Documento      ] Check
Moveto [Codigo do Documento    ] Check
Moveto [Codigo                 ] Check 
Moveto [Data de Emissao        ] Check 
Moveto [Descricao da Destinacao] TypeIn "..RETORN.."
{Ask} TypeIn "\\Sistemas\\Estoque\\NotaEI" Enter
Moveto [Numero do Lancamento   ] Example "nlan"
Moveto [Sequencia do Lancamento] Check
Moveto [Codigo do Item         ] Check
Moveto [Descricao do Item      ] Check
Moveto [Quantidade             ] Check
Moveto [Unidade Fiscal         ] Check
Moveto [Preco Unitario         ] Check
Moveto [Preco Total            ] Check
Moveto [Valor Desconto Total   ] Check 
Moveto [Valor Desconto Unitario] Check typein "As \"Valor Desconto Item\""    
Do_It!
ClearAll

if not isblank("Answer")
   then {Ask}{Answer} typein "Fast"
        Moveto [Valor Desconto Item    ] typein "changeto blank"
        do_it!
        clearall
endif            

Adiciona_Dados2("RETORNOS")

EndProc

;*******************************************************************************
;* Rotina adicionar dados na Db temporaria                                     *
;*******************************************************************************
Proc Adiciona_Dados1()
If IsEmpty("Answer")
   Then Return
EndIf

{Ask} {Answer}
Moveto [Codigo da Empresa      ] Example "cemp"
Moveto [Codigo                 ] Example "ccli"
Moveto [Data de Emissao        ] Example "dtem"
Moveto [Tipo do Documento      ] Example "tdoc"
Moveto [Codigo do Documento    ] Example "cdoc"
Moveto [Serie do Documento     ] Example "sdoc"
Moveto [Numero do Documento    ] Example "ndoc"
Moveto [Nome Fantasia Empresa  ] Example "nemp"
Moveto [Codigo do Representante] Example "crep"
Moveto [Nome Fantasia Represent] Example "nrep"
Moveto [Placa do Veiculo       ] Example "plac"
Moveto [UF Veiculo             ] Example "ufve"
Moveto [Codigo da Tabela       ] Example "ctab"
Moveto [Razao Social           ] Example "ncli"
Moveto [Valor Nota Fiscal      ] Example "VrNF"

{Ask} TypeIn Tabela1 Enter TypeIn "Fast Insert"
Moveto [Codigo da Empresa      ] Example "cemp"
Moveto [Codigo                 ] Example "ccli"
Moveto [Data de Emissao        ] Example "dtem"
Moveto [Tipo do Documento      ] Example "tdoc"
Moveto [Codigo do Documento    ] Example "cdoc"
Moveto [Serie do Documento     ] Example "sdoc"
Moveto [Numero do Documento    ] Example "ndoc"
Moveto [Nome Fantasia Empresa  ] Example "nemp"
Moveto [Codigo do Representante] Example "crep"
Moveto [Nome Fantasia Represent] Example "nrep"
Moveto [Placa do Veiculo       ] Example "plac"
Moveto [UF Veiculo             ] Example "ufve"
Moveto [Codigo da Tabela       ] Example "ctab"
Moveto [Razao Social           ] Example "ncli"
Moveto [Valor Nota Fiscal      ] Example "VrNF"    
Do_It!
ClearAll

EndProc                                           

;*******************************************************************************
;* Rotina adicionar dados na Db temporaria                                     *
;*******************************************************************************
Proc Adiciona_Dados2(Tipo)
private vrcomissao, vrref

If IsEmpty("Answer")
   Then Return
EndIf

View Tabela2
CoEdit "Answer"
Scan

  Switch
    Case Tipo="INDUSTRIALIZACAO":
      Moveto Tabela2       
      Moveto [Codigo da Empresa]
      Locate [Answer->Codigo da Empresa  ],[Answer->Codigo],[Answer->Codigo do Item],[Answer->Preco Unitario]
      If Not RetVal
         Then End
              Down
              [Codigo da Empresa]=[Answer->Codigo da Empresa  ]
              [Codigo           ]=[Answer->Codigo             ]
              [Codigo do Item   ]=[Answer->Codigo do Item     ]
              [Preco Unitario   ]=[Answer->Preco Unitario     ]     
      EndIf

      [Saida_Qtd      ]=[Saida_Qtd    ]+[Answer->Quantidade]
      [Saida_Vr       ]=[Answer->Preco Unitario]
      [Saida_VrTotal  ]=[Saida_Qtd    ]*[Saida_Vr]         
      [Saida_DescTotal]=[Saida_DescTotal]+[Answer->Valor Desconto Total]+[Answer->Valor Desconto Item]

    Case Tipo="RETORNOS":
      switch
        case VSDGOPRET="2" :
          Moveto Tabela2       
          Moveto [Codigo da Empresa]
          Locate [Answer->Codigo da Empresa  ],[Answer->Codigo],[Answer->Codigo do Item],[Answer->Preco Unitario]
          If Not RetVal
             Then 
                  End
                  Down
                  [Codigo da Empresa]=[Answer->Codigo da Empresa  ]
                  [Codigo           ]=[Answer->Codigo             ]
                  [Codigo do Item   ]=[Answer->Codigo do Item     ]
                  [Preco Unitario   ]=[Answer->Preco Unitario     ]
          EndIf

          [Retorno_Qtd          ]=[Retorno_Qtd      ]+[Answer->Quantidade]
          [Retorno_VrTotal      ]=[Retorno_Qtd      ]*[Saida_Vr          ]

        case VSDGOPRET="1" :
          Moveto Tabela2       
          Moveto [Codigo da Empresa]
          Locate [Answer->Codigo da Empresa  ],[Answer->Codigo],[Answer->Codigo do Item],[Answer->Preco Unitario]
          Verifica_Valor_Unitario(Retval,[Answer->Preco Unitario],"RETORNOS")

      endswitch

    Case Tipo="DEVOLUCOES":
      switch
        case VSDGOPRET="2" :
          Moveto Tabela2       
          Moveto [Codigo da Empresa]
          Locate [Answer->Codigo da Empresa  ],[Answer->Codigo],[Answer->Codigo do Item],[Answer->Preco Unitario]
          If Not RetVal
             Then 
                  End
                  Down
                  [Codigo da Empresa]=[Answer->Codigo da Empresa  ]
                  [Codigo           ]=[Answer->Codigo             ]
                  [Codigo do Item   ]=[Answer->Codigo do Item     ]
                  [Preco Unitario   ]=[Answer->Preco Unitario     ]
          EndIf

          [Devolucao_Qtd          ]=[Saida_Qtd        ]
          [Devolucao_VrTotal      ]=[Devolucao_Qtd      ]*[Saida_Vr          ]

          
        case VSDGOPRET="1" :
          Moveto Tabela2       
          Moveto [Codigo da Empresa]
          Locate [Answer->Codigo da Empresa  ],[Answer->Codigo],[Answer->Codigo do Item],[Answer->Preco Unitario]
          Verifica_Valor_Unitario(Retval,[Answer->Preco Unitario],"DEVOLUCOES")

      endswitch
    
  endSwitch

  REFDOCTO=[Answer->Tipo do Documento  ]+"/"+[Answer->Numero do Documento]+"-"+[Answer->Serie do Documento]+"  "+format("D13",[Answer->Data de Emissao])
   
  Switch
    Case Tipo="INDUSTRIALIZACAO"  : If Search(REFDOCTO  ,RELDOCTO_SAIDA  )=0 Then RELDOCTO_SAIDA  =RELDOCTO_SAIDA  +REFDOCTO   EndIf
    
    Case Tipo="RETORNOS"          : If Search(REFDOCTO  ,RELDOCTO_RETOR  )=0 Then RELDOCTO_RETOR  =RELDOCTO_RETOR  +REFDOCTO   EndIf
    Case Tipo="DEVOLUCOES"        : If Search(REFDOCTO  ,RELDOCTO_DEVOL  )=0 Then RELDOCTO_DEVOL  =RELDOCTO_DEVOL  +REFDOCTO   EndIf
  EndSwitch

  Moveto "Answer"
EndScan
Do_It!
ClearAll

EndProc

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc Verifica_Valor_Unitario(tipo,vrref,oper)
private tipo,vrref,itemencontrado,outret_descto.oper

while true
  switch
    case not tipo: ;false  ; nÆo tem item com preco
  
      itemencontrado=false
      Moveto Tabela2       
      Moveto [Codigo da Empresa]
      Locate [Answer->Codigo da Empresa  ],[Answer->Codigo],[Answer->Codigo do Item]
      If RetVal
         then 
              while [Codigo da Empresa  ]=[Answer->Codigo da Empresa  ] and
                    [Codigo             ]=[Answer->Codigo             ] and
                    [Codigo do Item     ]=[Answer->Codigo do Item     ]
          
                switch
                  case not IsBlank([Saida_Qtd]):
                    If ([Retorno_Qtd      ]+[Answer->Quantidade])>[Saida_Qtd]
                       Then 
                            [Answer->Quantidade   ]=([Retorno_Qtd      ]+[Answer->Quantidade])-[Saida_Qtd] 
                            vrref                  =[Saida_Vr       ]
          
                            [Retorno_Qtd          ]=[Saida_Qtd        ]
                            [Retorno_VrTotal      ]=[Retorno_Qtd      ]*[Saida_Vr          ]
                       Else
                            [Retorno_Qtd          ]=[Retorno_Qtd      ]+[Answer->Quantidade]
                            [Retorno_VrTotal      ]=[Retorno_Qtd      ]*[Saida_Vr          ]
                      
                            itemencontrado=true
                            quitloop
                    EndIf    
                endswitch
                skip
                if eot() 
                   then quitloop
                endif
              endwhile
      endif   
      quitloop
      
    case     tipo: ;true   ;     tem item com preco
      if not IsBlank([Saida_Qtd])
         then
              If ([Retorno_Qtd      ]+[Answer->Quantidade])>[Saida_Qtd]
                 Then 
                      [Answer->Quantidade   ]=([Retorno_Qtd      ]+[Answer->Quantidade])-[Saida_Qtd] 
                      vrref                  =[Saida_Vr       ]
        
                      [Retorno_Qtd          ]=[Saida_Qtd        ]
                      [Retorno_VrTotal      ]=[Retorno_Qtd      ]*[Saida_Vr          ]
                 Else
                      [Retorno_Qtd          ]=[Retorno_Qtd      ]+[Answer->Quantidade]
                      [Retorno_VrTotal      ]=[Retorno_Qtd      ]*[Saida_Vr          ]
                  
                      itemencontrado=true
                      quitloop
              EndIf    
      endif
      tipo=false
      loop
  
  endswitch

endwhile

if not itemencontrado
   then
        Moveto Tabela2       
        Moveto [Codigo da Empresa]
        Locate [Answer->Codigo da Empresa  ],[Answer->Codigo],[Answer->Codigo do Item],vrref
        if not retval
           then
                End
                Down
                [Codigo da Empresa    ]=[Answer->Codigo da Empresa  ]
                [Codigo               ]=[Answer->Codigo             ]
                [Codigo do Item       ]=[Answer->Codigo do Item     ]
                [Preco Unitario       ]=vrref
        endif
        [RetornoOutros_Qtd      ]=[RetornoOutros_Qtd]+[Answer->Quantidade]
        [RetornoOutros_VrTotal  ]=[RetornoOutros_Qtd]*vrref
        [RetornoOutros_DescTotal]=[RetornoOutros_DescTotal]+([Answer->Quantidade]*outret_descto)
endif

EndProc

;*******************************************************************************
;* Rotina adicionar dados na Db temporaria                                     *
;*******************************************************************************
Proc Adiciona_Totalizador()

COMISSAOREP=0   ; Comissao do Representante
VR_DESCONTO=0   ; Valor Desconto
VR_MERCADOR=0   ; Valor Mercadoria Liquido

If IsEmpty("Answer")
   Then Return
EndIf

COMISSAOREP=0   ; Comissao do Representante
VR_DESCONTO=0   ; Valor Desconto
VR_MERCADOR=0   ; Valor Mercadoria Liquido

Coedit "Answer"
Scan
  VR_MERCADOR = VR_MERCADOR + [Valor Mercadoria]
  VR_DESCONTO = VR_DESCONTO + [Valor Desconto]
  COMISSAOREP = COMISSAOREP + (([Valor Mercadoria]-[Valor Desconto])*[Comissao do Representante]/100)
EndScan
Do_It!
ClearAll

Delete "Answer"

EndProc ;Adiciona_Totalizador()


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

{Ask} {\\Sistemas\\Estoque\\Itens}
Moveto [Codigo do Item         ] Check Example "cite"
Moveto [Descricao do Item      ] Check
Moveto [Unidade Fiscal         ] Check
Moveto [Referencia             ] Check
Moveto [NCM                    ] Check
{Ask} TypeIn Tabela2 Enter
Moveto [Codigo do Item         ]       Example "cite"
Do_It!
ClearAll
TabelaRI=Adiciona_Indice_Temp("Codigo do Item")

{Ask} TypeIn TabelaRI Enter 
Moveto [Codigo do Item         ] Example "cite"
Moveto [Descricao do Item      ] Example "dite"
Moveto [Unidade Fiscal         ] Example "unf"
Moveto [Referencia             ] Example "ref"
Moveto [NCM                    ] Example "ncm"
{Ask} TypeIn Tabela2 Enter TypeIn "Fast"
Moveto [Codigo do Item         ] Example "cite"
Moveto [Descricao do Item      ] TypeIn "changeto _dite"
Moveto [Unidade Fiscal         ] TypeIn "changeto _unf"
Moveto [Referencia             ] TypeIn "changeto _ref"
Moveto [NCM                    ] TypeIn "changeto _ncm"
Do_It!
ClearAll

Delete TabelaRI

EndProc   ;  (Processa)

;*******************************************************************************
;* Rotina p/ Impressao                                                         *
;*******************************************************************************
Proc Gera_Dados()
private result

Do_It!
ClearAll

Tabela1=Cria_Temp(PrivDir())
Copy "\\Base\\Sistemas\\Vendas\\RM_1511a" Tabela1  

Tabela2=Cria_Temp(PrivDir())
Copy "\\Base\\Sistemas\\Vendas\\RM_1511b" Tabela2  


RELDOCTO_SAIDA=""
RELDOCTO_RETOR=""
RELDOCTO_DEVOL=""

result=true
Seleciona()
If not IsEmpty(Tabela1) 
   Then
        Processa()
   else
        MENSAGEM("N„o existem registros a processar")
        result=false
EndIf

Return result

EndProc ;Gera_Dados()

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
proc DeletaTabelas()

Delete Tabela1
Delete Tabela2

Release Vars Tabela1,Tabela2

endproc

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Dialog(Disparo,Campo,Evento,Elemento)
Temp=True
MSG_CAMPO=""
TECLA=""
If Disparo="OPEN"  Then AoCriarShowDialog() 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"] =  27:
          Temp=False
          Switch
            Case Campo="TG_EMPRESA"       : Campo="NO"
            Case Campo="TG_DESTINAT"      : Campo="TG_EMPRESA"
            Case Campo="TG_DTINI"         : Campo="TG_DESTINAT"
            Case Campo="TG_DTFIM"         : Campo="TG_DTINI"

            Case Campo="TG_OPITE"         : Campo="NO"
            Case Campo="TG_OPACVR"        : Campo="TG_OPITE"
            Case Campo="TG_OPRET"         : Campo="TG_OPACVR"

            Case Campo="TG_DATAREFERENTE" : Campo="NO"

            Case Campo="YES" Or Campo="NO": Switch 
                                              Case TELA = 1 : Campo="TG_EMPRESA"
                                              Case TELA = 2 : Campo="TG_OPITE"
                                              Case TELA = 3 : Campo="TG_DATAREFERENTE"
                                            EndSwitch   
          EndSwitch
     Case TELA=1 and ((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_DESTINAT"
                         EndIf   
                    Case Campo="TG_DESTINAT" :
                         If Not IsBlank(VSDGDESTINAT)
                            Then Campo="TG_DTINI"
                            Else VSDGNOMDEST=""
                         EndIf
                    Case Campo="TG_DTINI"         : Campo="TG_DTFIM"
                    Case Campo="TG_DTFIM"         : Campo="YES"

                    Case Campo="TG_OPITE"    : Campo="TG_OPACVR"
                         VSDGOPITE=ControlValue("TG_OPITE")
                         If VSDGOPITE="T"
                            Then VSDGDESCOPITE="TODOS"
                            Else VSDGOPITE    ="D"
                                 VSDGDESCOPITE="C/ DIFERENCA"
                         EndIf
                    Case Campo="TG_OPACVR"   : Campo="TG_OPRET"
                         VSDGOPACVR=ControlValue("TG_OPACVR")
                         If VSDGOPACVR="C"
                            Then VSDGDESCOPACVR="COM VALORES"
                            Else VSDGOPACVR    ="S"
                                 VSDGDESCOPACVR="SEM VALORES"
                         EndIf
                    Case Campo="TG_OPRET"        : Campo="YES"
                         VSDGOPRET = ControlValue("TG_OPRET")
                         Switch  
                           Case VSDGOPRET="2"    : VSDGDESCOPRET = "MANTER O VALOR DO RETORNO"
                           OtherWise             : VSDGOPRET     = "1"
                                                   VSDGDESCOPRET = "IGUALAR AO VALOR DA SAIDA"
                         EndSwitch

                    Case Campo="TG_DATAREFERENTE" :  
                         VSDGDTREFERENTE = ControlValue("TG_DATAREFERENTE")
                         If Not IsBlank(VSDGDTREFERENTE)
                            Then Campo="YES"
                         EndIf
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
        
Switch
  Case Campo="TG_EMPRESA"    : 
       MSG_CAMPO="Informe a Empresa"
  Case Campo="TG_DESTINAT" :
       MSG_CAMPO="Informe a Pessoa"

  Case Campo="TG_OPITE"    :
       MSG_CAMPO="Imprimir Itens: T=Todos  D=com Diferen‡a"
  Case Campo="TG_OPACVR"   :
       MSG_CAMPO="Imprimir Acerto: C=Com Valores  S=Sem Valores"
  Case Campo="TG_OPRET"    :
       MSG_CAMPO="Op‡„o Vr Retorno: 1=Igualar ao Vr da Saida  2=Manter o Vr do Retorno"

  Case Campo="TG_DATAREFERENTE" :
       MSG_CAMPO="Informe a Data para Acerto"

Endswitch

Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp

EndProc
                  
;*******************************************************************************
;* ROTINA PRINCIPAL                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Cadastro\\Bibliot"
If Not IsAssigned(SYS_CODIGO_CLIENTE) Then SYS_CODIGO_CLIENTE="" EndIf
LimpAguarde()
SYS_VALOR()

IMPRIME_APURACAO  = False
VSDGEMPRESA       = ""
VSDGNOMEMP        = ""
VSDGDESTINAT      = ""
VSDGNOMDEST       = ""
VSDGOPITE         = ""
VSDGDESCOPITE     = ""
VSDGOPACVR        = ""
VSDGDESCOPACVR    = ""
VSDGDESCOPRET     = ""
VSDGDESCOPRET     = ""
VSDGDTINI         = BlankDate()
VSDGDTFIM         = BlankDate()

While True
  TELA = 1

  ShowDialog "Resumo de Acerto - Remessa/Industrializacao" Proc "SD_Dialog"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC","TAB",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140
   @ 05,12   Height 11 Width 77
                      
    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_NOMCLI" To VSDGNOMDEST     

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

    Pushbutton @ 07,22 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 07,36 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue

  EndDialog                    
  If Not RetVal Then QuitLoop EndIf
  If Not Valida_ShowDialog("") Then Loop EndIf

  If IsBlank(VSDGDTFIM)
     Then Mensagem("Data Final Invalida !")
          Loop
  EndIf
  
  If IsBlank(VSDGDESTINAT)
     Then Mensagem("Informe o cliente para prosseguir!")
          Loop
  EndIf
  
  Tabela=Cria_Temp(PrivDir())
  Copy "\\Base\\Sistemas\\Vendas\\RM_1511a" Tabela
  
  AGUARDE("Aguarde, Ajustando registros")
  Seleciona_Dados()
  If IsEmpty(Tabela)
     Then MENSAGEM("N„o existem registros a processar")
          Loop
  EndIf

  CopyForm "\\Base\\Sistemas\\Vendas\\RM_1511a" "F" Tabela "F"
  SELECIONAI()

  Echo Normal
  Echo Off
  ClearAll
  
EndWhile
ClearAll
Release Vars All
Release Procs All
