;** Rm_0985 ********************************************************************
;* Resumo de Manifestos / Diferenca Retorno/Complemento de Itens e Valores     *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 12/02/2004 por Anivel Augusto Rodrigues
;Ultima Alteracao: 01/06/2004 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes
;Alterado em     : 10/07/2006 por Antonio Marcelo Alves
;Motivo Alteracao: Ajustes
;Ultima Alteracao: 14/08/2007 por Antonio Marcelo Alves
;Motivo Alteracao: Ajustes Deleta_Arquivo
;Ultima Alteracao: 10/07/2012 por Bruno Carvalho
;Motivo Alteracao: Adicionado filtro na ask do NotaI "Situacao_Item"
;Ultima Alteracao: 27/05/2016 por Bruno Carvalho 
;Motivo Alteracao: Alterado NUM_LANCTO = PROXLANCTO_NLANC -> Padroniza‡Æo da rotina de Numero_Lancamento()
;Ultima Alteracao: 12/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog         
;Ultima Alteracao: 29/12/2016 por Rafael Matos
;Motivo Alteracao: Ajustes MensagemCheckBoxes()
;Ultima Alteracao: 19/10/2017 por Bruno Carvalho
;Motivo Alteracao: Removido de Grava_PedidoI() -> Condicao de Pagamento, Composicao de Dias          
;Ultima Alteracao: 31/10/2017 por Bruno Carvalho
;Motivo Alteracao: Removido de Grava_PedidoI() -> Empresa Atendimento
;Ultima Alteracao: 16/03/2019 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes Numero_Lancamento("Interno","Locked_Down")

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

;****** Manifestos *************************************************************
If IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC") And
   IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaI")
   Then
        {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"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 [Data de Emissao        ] Check
        Moveto [Numero_Carregamento    ] Check TypeIn "~VSDGNCARREG"
        Moveto [Codigo do Representante] Check
        Moveto [Nome Fantasia Represent] Check
        Moveto [Descricao da Destinacao] TypeIn "MANIFE.."
        Moveto [Tipo Movimento Estoque ] TypeIn "S"
        Moveto [Placa do Veiculo       ] Check
        Moveto [UF Veiculo             ] Check
        Moveto [Codigo da Tabela       ] Check
        Moveto [Situacao               ] TypeIn "Not C"
        Do_It!
        ClearAll
        If IsEmpty("Answer")
           Then MENSAGEM("Manifesto n„o encontrado !")
                Return
        EndIf
        Adiciona_Dados1()


        {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC" Enter
        Moveto [Codigo da Empresa      ] Check Example "cemp" TypeIn ", ~VSDGEMPRESA.."
        Moveto [Numero do Documento    ] Check Example "ndoc"
        Moveto [Serie do Documento     ] Check Example "sdoc"
        Moveto [Numero_Carregamento    ] Check  TypeIn "~VSDGNCARREG"
        Moveto [Descricao da Destinacao] TypeIn "MANIFE.."
        Moveto [Tipo Movimento Estoque ] TypeIn "S"
        Moveto [Situacao               ] TypeIn "Not C"
				{Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"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 [Situacao_Item          ] TypeIn "Not C"
        Do_It!
        ClearAll

        Adiciona_Dados2("MANIFESTOS")
EndIf

;****** Vendas *****************************************************************
If IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC") And
   IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaI") And
   IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaV")
   Then {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC" Enter
        Moveto [Codigo da Empresa      ] Check Example "cemp" TypeIn ", ~VSDGEMPRESA.."
        Moveto [Numero do Documento    ] Check Example "ndoc" TypeIn ", as Numero Temp"
        Moveto [Serie do Documento     ] Check Example "sdoc"
        Moveto [Descricao da Destinacao] TypeIn "..VENDA.. ..MANIFE.."
        Moveto [Tipo Movimento Estoque ] TypeIn "S"
        Moveto [Situacao               ] TypeIn "Not C"
        Moveto [Numero_Carregamento    ] Check TypeIn "~VSDGNCARREG"
        Moveto [Tipo de Pagamento      ] Check
        {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"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 [Situacao_Item          ] TypeIn "Not C"
        Do_It!
        ClearAll

        Adiciona_Dados2("VENDAS")


        {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC" Enter
        Moveto [Codigo da Empresa      ] Check Example "cemp" TypeIn ", ~VSDGEMPRESA.."
        Moveto [Numero do Documento    ] Check Example "ndoc" TypeIn ", as Numero Temp"
        Moveto [Serie do Documento     ] Check Example "sdoc"
        Moveto [Descricao da Destinacao] TypeIn "..VENDA.. ..MANIFE.."
        Moveto [Tipo Movimento Estoque ] TypeIn "S"
        Moveto [Situacao               ] TypeIn "Not C"
        Moveto [Numero_Carregamento    ] Check TypeIn "~VSDGNCARREG"
        Moveto [Condicao de Pagamento  ] Check
        Moveto [Descricao CondPagto    ] Check
        Moveto [Tipo de Pagamento      ] Check
        {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaV" Enter
        Moveto [Codigo da Empresa      ] Example "cemp"
        Moveto [Numero do Documento    ] Example "ndoc"
        Moveto [Serie do Documento     ] Example "sdoc"
        Moveto [Sequencia              ] Check
        Moveto [Valor                  ] Check
        Moveto [Forma de Pagamento     ] Check
        Do_It!
        ClearAll

        Adiciona_Dados3()
EndIf

;****** Retornos - Manifesto ****************************************************
If IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC") And
   IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaI")
   Then
        {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC" Enter
        Moveto [Codigo da Empresa      ] Check Example "cemp" TypeIn ", ~VSDGEMPRESA.."
        Moveto [Numero do Documento    ] Check Example "ndoc"
        Moveto [Serie do Documento     ] Check Example "sdoc"
        Moveto [Descricao da Destinacao] TypeIn "..RET.. ..MANIFE.."
        Moveto [Tipo Movimento Estoque ] TypeIn "E"
        Moveto [Situacao               ] TypeIn "Not C"
        Moveto [Numero_Carregamento    ] Check TypeIn "~VSDGNCARREG"
        {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"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 [Situacao_Item          ] TypeIn "Not C"
        Do_It!
        ClearAll

        Adiciona_Dados2("RETORNOS")
EndIf

;****** Bonificacoes ***********************************************************
If IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC") And
   IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaI")
   Then {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC" Enter
        Moveto [Codigo da Empresa      ] Check Example "cemp" TypeIn ", ~VSDGEMPRESA.."
        Moveto [Numero do Documento    ] Check Example "ndoc" TypeIn ", as Numero Temp"
        Moveto [Serie do Documento     ] Check Example "sdoc"
        Moveto [Descricao da Destinacao] TypeIn "BONIFICA.."
        Moveto [Tipo Movimento Estoque ] TypeIn "S"
        Moveto [Situacao               ] TypeIn "Not C"
        Moveto [Numero_Carregamento    ] Check TypeIn "~VSDGNCARREG"
        {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"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 [Situacao_Item          ] TypeIn "Not C"
        Do_It!
        ClearAll

        Adiciona_Dados2("BONIFICACOES")
EndIf

;****** Trocas *****************************************************************
If IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC") And
   IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaI")
   Then {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC" Enter
        Moveto [Codigo da Empresa      ] Check Example "cemp" TypeIn ", ~VSDGEMPRESA.."
        Moveto [Numero do Documento    ] Check Example "ndoc" TypeIn ", as Numero Temp"
        Moveto [Serie do Documento     ] Check Example "sdoc"
        Moveto [Descricao da Destinacao] TypeIn "..TROCA.."
        Moveto [Tipo Movimento Estoque ] TypeIn "S"
        Moveto [Situacao               ] TypeIn "Not C"
        Moveto [Numero_Carregamento    ] Check TypeIn "~VSDGNCARREG"
        {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"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 [Situacao_Item          ] TypeIn "Not C"
        Do_It!
        ClearAll

        Adiciona_Dados2("TROCAS")
EndIf

;****** Devolucoes - Manifesto ****************************************************
If IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC") And
   IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaI")
   Then
        {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC" Enter
        Moveto [Codigo da Empresa      ] Check Example "cemp" TypeIn ", ~VSDGEMPRESA.."
        Moveto [Numero do Documento    ] Check Example "ndoc" TypeIn ", as Numero Temp"
        Moveto [Serie do Documento     ] Check Example "sdoc"
        Moveto [Descricao da Destinacao] TypeIn "..DEVOL.."
        Moveto [Tipo Movimento Estoque ] TypeIn "E"
        Moveto [Situacao               ] TypeIn "Not C"
        Moveto [Numero_Carregamento    ] Check TypeIn "~VSDGNCARREG"
        {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"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 [Situacao_Item          ] TypeIn "Not C"
        Do_It!
        ClearAll

        Adiciona_Dados2("DEVOLUCOES")
EndIf

;****** Devolucoes - 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 Example "cemp" TypeIn ", ~VSDGEMPRESA.."
        Moveto [Tipo de Operacao       ] TypeIn "D"
        Moveto [Numero Nota Original   ] Check TypeIn "as Numero do Documento"
        Moveto [Numero_Carregamento    ] Check TypeIn "~VSDGNCARREG"
        {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"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
        Do_It!
        ClearAll

        Adiciona_Dados2("DEVOLUCOES")
EndIf

;****** Titulos Baixados *******************************************************
If IsTable("\\Sistemas\\Ctarec\\"+Dir_Trab+"Duplic") And
   IsTable("\\Sistemas\\Ctarec\\"+Dir_Trab+"DupBaixa")
   Then
        {Ask} TypeIn "\\Sistemas\\Ctarec\\"+Dir_Trab+"Duplic" Enter
        Moveto [Numero do Lancamento   ] Check Example "nlan"
        Moveto [Codigo da Empresa      ] Check Example "cemp" TypeIn ", ~VSDGEMPRESA.."
        {Ask} TypeIn "\\Sistemas\\Ctarec\\"+Dir_Trab+"DupBaixa" Enter
        Moveto [Numero do Lancamento   ] Example "nlan"
        Moveto [Sequencia da Baixa     ] Check
        Moveto [Valor do Recebimento   ] Check
        Moveto [Valor do Juros         ] Check
        Moveto [Valor do Desconto      ] Check
        Moveto [Numero_Carregamento    ] Check TypeIn "~VSDGNCARREG"
        Moveto [Valor Dinheiro         ] Check
        Moveto [Valor Cheque           ] Check
        Moveto [Valor Cheque Pre_Datado] Check
        Do_It!
        ClearAll

        Adiciona_Dados4()
EndIf

EndProc   ;  (Seleciona)

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

If IsEmpty("Answer")
   Then Return
EndIf

{Ask} {Answer}
Moveto [Codigo da Empresa      ] Example "cemp"
Moveto [Numero_Carregamento    ] Example "ncar"
Moveto [Tipo do Documento      ] Example "tdoc"
Moveto [Serie do Documento     ] Example "sdoc"
Moveto [Numero do Documento    ] Example "ndoc"
Moveto [Nome Fantasia Empresa  ] Example "nemp"
Moveto [Data de Emissao        ] Example "dtem"
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"
{Ask} TypeIn Tabela1 Enter TypeIn "Fast Insert"
Moveto [Codigo da Empresa      ] Example "cemp"
Moveto [Numero_Carregamento    ] Example "ncar"
Moveto [Tipo do Documento      ] Example "tdoc"
Moveto [Serie do Documento     ] Example "sdoc"
Moveto [Numero do Documento    ] Example "ndoc"
Moveto [Nome Fantasia Empresa  ] Example "nemp"
Moveto [Data de Emissao        ] Example "dtem"
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"
Do_It!
ClearAll

EndProc

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

If IsEmpty("Answer")
   Then Return
EndIf

View Tabela2
CoEdit "Answer"
Scan
  Moveto Tabela2
  Moveto [Codigo da Empresa]
  Locate [Answer->Codigo da Empresa  ],
         [Answer->Numero_Carregamento],
         [Answer->Codigo do Item     ]
  If Not RetVal
     Then End
          Down
          [Codigo da Empresa  ]=[Answer->Codigo da Empresa  ]
          [Numero_Carregamento]=[Answer->Numero_Carregamento]
          [Codigo do Item     ]=[Answer->Codigo do Item     ]
  EndIf
  Switch
    Case Tipo="MANIFESTOS":
         [Saida_Qtd      ]=[Saida_Qtd    ]+[Answer->Quantidade    ]
         [Saida_Vr       ]=[Answer->Preco Unitario]
         [Saida_VrTotal  ]=[Saida_VrTotal]+[Answer->Preco Total   ]
    Case Tipo="RETORNOS":
         [Retorno_Qtd    ]=[Retorno_Qtd    ]+[Answer->Quantidade    ]
         [Retorno_VrTotal]=[Retorno_Qtd    ]*[Saida_Vr]
    Case Tipo="VENDAS":
         [Venda_Qtd      ]=[Venda_Qtd      ]+[Answer->Quantidade ]
         [Venda_VrTotal  ]=[Venda_VrTotal  ]+[Answer->Preco Total]
         [Venda_DescTotal]=[Venda_DescTotal]+[Answer->Valor Desconto Total]

         VRCAL=([Answer->Preco Total]-[Answer->Valor Desconto Total])-([Answer->Quantidade]*[Saida_Vr])
         Switch
           Case VRCAL<0 : [Desconto_Apurado ]=[Desconto_Apurado ]+(VRCAL*-1)
           Case VRCAL>0 : [Acrescimo_Apurado]=[Acrescimo_Apurado]+VRCAL
         EndSwitch

    Case Tipo="TROCAS":
         [Troca_Qtd      ]=[Troca_Qtd      ]+[Answer->Quantidade]
         [Troca_VrTotal  ]=[Troca_Qtd      ]*[Saida_Vr]
    Case Tipo="BONIFICACOES":
         [Bonif_Qtd      ]=[Bonif_Qtd      ]+[Answer->Quantidade]
         [Bonif_VrTotal  ]=[Bonif_Qtd      ]*[Saida_Vr]
    Case Tipo="DEVOLUCOES":
         [Devol_Qtd      ]=[Devol_Qtd      ]+[Answer->Quantidade]
         [Devol_VrTotal  ]=[Devol_Qtd      ]*[Saida_Vr]
  EndSwitch

  Moveto "Answer"
EndScan
Do_It!
ClearAll

EndProc

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

If IsEmpty("Answer")
   Then Return
EndIf

View Tabela3
CoEdit "Answer"
Scan
  Moveto Tabela3
  Moveto [Codigo da Empresa]
  Locate [Answer->Codigo da Empresa    ],
         [Answer->Numero_Carregamento  ],
         "",
         [Answer->Tipo de Pagamento    ],
         [Answer->Forma de Pagamento   ]
  If Not RetVal
     Then End
          Down
          [Codigo da Empresa    ]=[Answer->Codigo da Empresa    ]
          [Numero_Carregamento  ]=[Answer->Numero_Carregamento  ]
        ;;[Condicao de Pagamento]=[Answer->Condicao de Pagamento]
          [Tipo de Pagamento    ]=[Answer->Tipo de Pagamento    ]
          [Forma de Pagamento   ]=[Answer->Forma de Pagamento   ]
  EndIf
  [Valor]=[Valor]+[Answer->Valor]

  Moveto "Answer"
EndScan
Do_It!
ClearAll

EndProc

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

If IsEmpty("Answer")
   Then Return
EndIf

View Tabela4
CoEdit "Answer"
Scan
  Moveto Tabela4
  Moveto [Codigo da Empresa]
  Locate [Answer->Codigo da Empresa    ],
         [Answer->Numero_Carregamento  ]
  If Not RetVal
     Then End
          Down
          [Codigo da Empresa    ]=[Answer->Codigo da Empresa    ]
          [Numero_Carregamento  ]=[Answer->Numero_Carregamento  ]
  EndIf
  [Valor do Recebimento   ]=[Valor do Recebimento   ]+[Answer->Valor do Recebimento   ]
  [Valor do Juros         ]=[Valor do Juros         ]+[Answer->Valor do Juros         ]
  [Valor do Desconto      ]=[Valor do Desconto      ]+[Answer->Valor do Desconto      ]
  [Valor Dinheiro         ]=[Valor Dinheiro         ]+[Answer->Valor Dinheiro         ]
  [Valor Cheque           ]=[Valor Cheque           ]+[Answer->Valor Cheque           ]
  [Valor Cheque Pre_Datado]=[Valor Cheque Pre_Datado]+[Answer->Valor Cheque Pre_Datado]

  Moveto "Answer"
EndScan
Do_It!
ClearAll

EndProc

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

{Ask} {\\Sistemas\\Estoque\\Itens}
Moveto [Codigo do Item         ] Example "cite"
Moveto [Descricao do Item      ] Example "dite"
Moveto [Unidade Fiscal         ] Example "unf"
{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"
Do_It!
ClearAll

Sort Tabela2 On "Codigo da Empresa", "Numero_Carregamento", "Descricao do Item" To "Answer"
ClearAll

Seq5=0
View Tabela1
View Tabela5
CoEdit "Answer"
Scan
  QTDDIFER=[Saida_Qtd]-([Retorno_Qtd]+[Venda_Qtd]+[Bonif_Qtd]+[Troca_Qtd])

  If QTDDIFER>0
     Then [Retorno_VrTotal]=QTDDIFER*[Saida_Vr]
  EndIf

  If QTDDIFER<0
     Then Complemento_Item()
  EndIf
EndScan
Do_It!
ClearAll

EndProc   ;  (Processa)

;*******************************************************************************
;* Rotina p/ Complemento de Item                                               *
;*******************************************************************************
Proc Complemento_Item()
Private Valor, TabPreco

Valor=[Answer->Saida_Vr]
If IsBlank(Valor) Or Valor=0
   Then Moveto Tabela1
        Moveto [Codigo da Tabela]
        TabPreco=[Codigo da Tabela]

        Ativa_Lookup()
        Moveto [Codigo da Tabela]
        Locate TabPreco, [Answer->Codigo do Item]
        If RetVal
           Then Valor=[Preco Unitario]
           Else Valor=BlankNum()
        EndIf
        KeyPress "ESC"

EndIf

Seq5=Seq5+1
Moveto Tabela5
End
Down
[Codigo da Empresa  ]=[Answer->Codigo da Empresa  ]
[Numero_Carregamento]=[Answer->Numero_Carregamento]
[Sequencia          ]=Seq5
[Codigo do Item     ]=[Answer->Codigo do Item     ]
[Descricao do Item  ]=[Answer->Descricao do Item  ]
[Unidade Fiscal     ]=[Answer->Unidade Fiscal     ]
[Complemento_Qtd    ]=[Complemento_Qtd ]+(QTDDIFER*-1)
[Complemento_Vr     ]=Valor
[Complemento_VrTotal]=[Complemento_Qtd ]*[Complemento_Vr]
Moveto "Answer"

EndProc



;*******************************************************************************
;* Rotina p/ Impressao                                                         *
;*******************************************************************************
Proc Imprimir()
AGUARDE("Aguarde, processando dados")

Print File ARQIMP ASP1+CI_15CPP+ASP2+"\n"
Print File ARQIMP ASP1+CI_6LPP+ASP2+"\n"
If Not IsAssigned(NOMEMPRESA) Then NOMEMPRESA="TESTE" EndIf

EMPANT  = "****"
CARANT  = "****"

pag=0
lin=0

View "AcCarrgC"
View "AcCarrgV"
View Tabela5
View Tabela4
View Tabela3
View Tabela1
View "Answer"
Scan

  If [Codigo da Empresa  ]<>EMPANT  Or
     [Numero_Carregamento]<>CARANT
     Then
          TotalItem()

          Lista_Complemento()

          TotalFinanc()

          EMPANT =[Codigo da Empresa  ]
          CARANT =[Numero_Carregamento]

          Moveto Tabela1
          Moveto [Codigo da Empresa]
          Locate EMPANT, CARANT

          Cabecalho()
  EndIf

  QTDDIFER=[Saida_Qtd]-([Retorno_Qtd]+[Venda_Qtd]+[Bonif_Qtd]+[Troca_Qtd])

  If (VSDGOPITE="T") Or
     (VSDGOPITE="D" And QTDDIFER<0)
     Then Detalhe()

          TIT_SAIDA=TIT_SAIDA+[Saida_VrTotal  ]
          TIT_VENDA=TIT_VENDA+[Venda_VrTotal  ]
  EndIf

  TOT_SAIDA=TOT_SAIDA+[Saida_VrTotal  ]

  TOT_RETOR=TOT_RETOR+[Retorno_VrTotal]
  TOT_BONIF=TOT_BONIF+[Bonif_VrTotal  ]
  TOT_TROCA=TOT_TROCA+[Troca_VrTotal  ]
  TOT_DEVOL=TOT_DEVOL+[Devol_VrTotal  ]

  TOT_VENDA=TOT_VENDA+([Venda_VrTotal]-[Venda_DescTotal])
  TOT_DESCT=TOT_DESCT+[Venda_DescTotal]

  TOT_DESCA=TOT_DESCA+[Desconto_Apurado ]
  TOT_ACREA=TOT_ACREA+[Acrescimo_Apurado]

EndScan
TotalItem()

Lista_Complemento()

TotalFinanc()

;;Print File ARQIMP ASP1+CI_10CPP+ASP2
;;Print File ARQIMP ASP1+CI_6LPP+ASP2
ClearAll
EndProc   ;  (Imprimir)





;*******************************************************************************
;* Rotina da Lista de Itens p/ Complemento                                     *
;*******************************************************************************
Proc Lista_Complemento()
While pag>0
  Moveto Tabela5
  Moveto [Codigo da Empresa]
  Locate EMPANT, CARANT
  If RetVal
     Then
          Cabecalho_Complemento()
          While [Codigo da Empresa  ]=EMPANT And
                [Numero_Carregamento]=CARANT

            Detalhe_Complemento()
            TOT_COMPL=TOT_COMPL+[Complemento_VrTotal]

            Skip
            If EOT() Then QuitLoop EndIf
          EndWhile
          Total_Complemento()
  EndIf
  QuitLoop
EndWhile

Moveto "Answer"

EndProc

;*******************************************************************************
;* Rotina p/ Cabecalho Complemento                                             *
;*******************************************************************************
Proc Cabecalho_Complemento()
While True
  pag=pag+1

  If OPCAOPAG<>"Todas"
     Then If pag<OPCAOPAGINI Or
             pag>OPCAOPAGFIM
             Then QuitLoop
          EndIf
  EndIf

  Print File ARQIMP ASP1+Fill("-",137)+ASP2+"\n\n"
  Print File ARQIMP ASP1+"*** C O M P L E M E N T O  D E  I T E N (S)  N O  M A N I F E S T O ***                      "+ASP2+"\n\n"
  Print File ARQIMP ASP1+"Produto                                 UN      Saida   Vr.Unit.   Vr.Total"+ASP2+"\n"
  Print File ARQIMP ASP1+"--------------------------------------- -- ---------- ---------- ----------"+ASP2+"\n"
                         ;1234567890 1234567890123456789012345678 XX 999.999,99 999.999,99 999.999,99

  QuitLoop
EndWhile
lin=6

EndProc   ; (Cabecalho)


;*******************************************************************************
;* Rotina p/ Detalhe Complemento                                               *
;*******************************************************************************
Proc Detalhe_Complemento()
ChecaLinhaPagina(59)
While True
  If OPCAOPAG<>"Todas"
     Then If pag<OPCAOPAGINI Or
             pag>OPCAOPAGFIM
             Then QuitLoop
          EndIf
  EndIf

  Print File ARQIMP ASP1+COMPLETA([Codigo do Item   ],11," ")
  Print File ARQIMP COMPLETA([Descricao do Item],28," ")+Spaces(1)
  Print File ARQIMP COMPLETA([Unidade Fiscal   ],02," ")
  Print File ARQIMP Format("W11.2,EIC",[Complemento_Qtd    ])
  Print File ARQIMP Format("W11.2,EIC",[Complemento_Vr     ])
  Print File ARQIMP Format("W11.2,EIC",[Complemento_VrTotal])
  Print File ARQIMP ASP2+"\n"
  QuitLoop
EndWhile
lin=lin+1
EndProc    ;  (Detalhe)

;*******************************************************************************
;* Rotina p/ Total Complemento                                                 *
;*******************************************************************************
Proc Total_Complemento()
While pag>0
  ChecaLinhaPagina(57)
  lin=lin+2

  If OPCAOPAG<>"Todas"
     Then If pag<OPCAOPAGINI Or
             pag>OPCAOPAGFIM
             Then QuitLoop
          EndIf
  EndIf

  Print File ARQIMP ASP1+Format("W075,AR","----------")+ASP2+"\n"
  Print File ARQIMP ASP1+Format("W064,AR","Total...")
  Print File ARQIMP      Format("W11.2,EIC",TOT_COMPL)+ASP2+"\n"

  QuitLoop
EndWhile
EndProc    ;  (Total)





;*******************************************************************************
;* Rotina checagem n. de linhas                                                *
;*******************************************************************************
Proc ChecaLinhaPagina(MaxLin)
Private MaxLin

If lin>=MaxLin
   Then While True
          If OPCAOPAG<>"Todas"
             Then If pag<OPCAOPAGINI Or
                     pag>OPCAOPAGFIM
                     Then QuitLoop
                  EndIf
          EndIf
          Print File ARQIMP ASP1+"\f"+ASP2+"\n"
          QuitLoop
        EndWhile
        Cabecalho()

EndIf
EndProc

;*******************************************************************************
;* Rotina p/ Cabecalho                                                         *
;*******************************************************************************
Proc Cabecalho()
While True
  pag=pag+1

  If OPCAOPAG<>"Todas"
     Then If pag<OPCAOPAGINI Or
             pag>OPCAOPAGFIM
             Then Moveto "Answer"
                  QuitLoop
          EndIf
  EndIf

  Moveto Tabela1
  Print File ARQIMP ASP1+Fill("-",137)+ASP2+"\n"
  Print File ARQIMP ASP1+COMPLETA(NOMEMPRESA,97," ")+"Emissao.: "+
             AlinhM(LTrim(Format("D13",Today())),10)+"-"+
             AlinhM(LTrim(Time()),8)+"  Pag.:"+Format("W4,EIC",pag)+ASP2+"\n"
  Print File ARQIMP ASP1+Fill("-",137)+ASP2+"\n\n"
  Print File ARQIMP ASP1+Format("W137,AC","Diferenca de Manifesto X Vendas X Retornos X Complemtos")+ASP2+"\n\n"
  Print File ARQIMP ASP1+COMPLETA("Empresa: "+[Codigo da Empresa]+" "+[Nome Fantasia Empresa],40," ")
  Print File ARQIMP      "No Carr: "+COMPLETA([Numero_Carregamento],17," ")
  Print File ARQIMP      "Emissao: "+Format("D13",[Data de Emissao])+"           Itens: "+VSDGDESCOPITE+ASP2+"\n"
  Print File ARQIMP ASP1+COMPLETA("Repres.: "+[Codigo do Representante]+" "+[Nome Fantasia Represent],40," ")
  Print File ARQIMP      "Veiculo: "+COMPLETA([Placa do Veiculo],10," ")+"/"+COMPLETA([UF Veiculo],6," ")
  Print File ARQIMP      "Tabela.: "+COMPLETA([Codigo da Tabela],20," ")
  Print File ARQIMP      "Docto: "+[Tipo do Documento]+"/"+[Numero do Documento]+ASP2+"\n\n"

  Print File ARQIMP ASP1+"Produto                                 UN      Saida    Retorno  %       Venda   Bonif.   Troca   Devol.    Difer.   Vr.Venda   Vr.Saida"+ASP2+"\n"
  Print File ARQIMP ASP1+"--------------------------------------- -- ---------- --------------- --------- -------- ------- -------- --------- ---------- ----------"+ASP2+"\n"
                         ;1234567890 1234567890123456789012345678 XX 999.999,99 999.999,9 999,9 999.999,9 99.999,9 9.999,9 99.999,9 99.999,99 999.999,99 999.999,99

  Moveto "Answer"

  QuitLoop
EndWhile
lin=11

EndProc   ; (Cabecalho)

;*******************************************************************************
;* Rotina p/ Detalhe                                                           *
;*******************************************************************************
Proc Detalhe()
ChecaLinhaPagina(59)
While True
  If OPCAOPAG<>"Todas"
     Then If pag<OPCAOPAGINI Or
             pag>OPCAOPAGFIM
             Then QuitLoop
          EndIf
  EndIf

  Print File ARQIMP ASP1+COMPLETA([Codigo do Item   ],11," ")
  Print File ARQIMP COMPLETA([Descricao do Item],28," ")+Spaces(1)
  Print File ARQIMP COMPLETA([Unidade Fiscal   ],02," ")
  Print File ARQIMP Format("W11.2,EIC",[Saida_Qtd  ])
  Print File ARQIMP Format("W10.2,EIC",[Retorno_Qtd])
  Print File ARQIMP Format("W06.1,EIC",([Retorno_Qtd]/[Saida_Qtd])*100)
  Print File ARQIMP Format("W10.2,EIC",[Venda_Qtd  ])
  Print File ARQIMP Format("W09.1,EIC",[Bonif_Qtd  ])
  Print File ARQIMP Format("W08.1,EIC",[Troca_Qtd  ])
  Print File ARQIMP Format("W09.1,EIC",[Devol_Qtd  ])
  Print File ARQIMP Format("W10.2,EIC",QTDDIFER)
  Print File ARQIMP Format("W11.2,EIC",[Venda_VrTotal])
  Print File ARQIMP Format("W11.2,EIC",[Saida_VrTotal])
  Print File ARQIMP ASP2+"\n"
  QuitLoop
EndWhile
lin=lin+1
EndProc    ;  (Detalhe)

;*******************************************************************************
;* Rotina p/ SubTotal                                                          *
;*******************************************************************************
Proc TotalItem()
While pag>0
  ChecaLinhaPagina(57)
  lin=lin+2

  If OPCAOPAG<>"Todas"
     Then If pag<OPCAOPAGINI Or
             pag>OPCAOPAGFIM
             Then QuitLoop
          EndIf
  EndIf

  Print File ARQIMP ASP1+Format("W137,AR","---------- ----------")+ASP2+"\n"
  Print File ARQIMP ASP1+Format("W115,AR","Total...")
  Print File ARQIMP      Format("W11.2,EIC",TIT_VENDA)
  Print File ARQIMP      Format("W11.2,EIC",TIT_SAIDA)+ASP2+"\n"

  QuitLoop
EndWhile
EndProc    ;  (Total)

;*******************************************************************************
;* Rotina p/ Total                                                             *
;*******************************************************************************
Proc TotalFinanc()
While pag>0
  ChecaLinhaPagina(40)

  If OPCAOPAG<>"Todas"
     Then If pag<OPCAOPAGINI Or
             pag>OPCAOPAGFIM
             Then Moveto "Answer"
                  QuitLoop
          EndIf
  EndIf

  Print File ARQIMP ASP1+Fill("-",137)+ASP2+"\n\n"

  Carregamento()

  Print File ARQIMP ASP1+Spaces(05)+"***  R E S U L T A D O"+ASP2+"\n"
  Print File ARQIMP ASP1+Spaces(10)+"***  T I T U L O S  R E C E B I D O S"+ASP2+"\n"
  Print File ARQIMP ASP1+Spaces(14)+"    Titulos       +Juros    -Descontos    =Recebido     Dinheiro       Cheque  Cheque Pre      =Total   Diferenca"+ASP2+"\n"
  Moveto Tabela4                     ;999.999,99   999.999,99    999.999,99   999.999,99   999.999,99   999.999,99  999.999,99  999.999,99  999.999,99
  Moveto [Codigo da Empresa]
  Locate EMPANT, CARANT
  If RetVal
     Then
          TOT_TITUL=[Valor do Recebimento   ]
          SOMA_FR  =[Valor Dinheiro         ]+
                    [Valor Cheque           ]+
                    [Valor Cheque Pre_Datado]
          DIFE_FR  =TOT_TITUL-SOMA_FR

          Print File ARQIMP ASP1+Spaces(10)+
                Format("W15.2,EIC",([Valor do Recebimento]-[Valor do Juros])+[Valor do Desconto   ]  )+"  "+
                Format("W11.2,EIC",[Valor do Juros         ])+"    "+
                Format("W10.2,EIC",[Valor do Desconto      ])+"   "+
                Format("W10.2,EIC",[Valor do Recebimento   ])+"   "+
                Format("W10.2,EIC",[Valor Dinheiro         ])+"   "+
                Format("W10.2,EIC",[Valor Cheque           ])+"  "+
                Format("W10.2,EIC",[Valor Cheque Pre_Datado])+"  "+
                Format("W10.2,EIC",SOMA_FR)+"  "+
                Format("W10.2,EIC",DIFE_FR)+ASP2+"\n"
     Else Print File ARQIMP ASP1+""+ASP2+"\n"
  EndIf
  Print File ARQIMP ASP1+""+ASP2+"\n"

  Print File ARQIMP ASP1+Spaces(10)+"***  F O R M A  P A G T O  V E N D A S"+ASP2+"\n"

  TOT_AVISTA=0
  TOT_FPGTO =0
  Moveto Tabela3
  Moveto [Codigo da Empresa]
  Locate EMPANT, CARANT
  If RetVal
     Then wnc  =0
          LINHA=""
          While [Codigo da Empresa  ]=EMPANT And
                [Numero_Carregamento]=CARANT

            If wnc=3
               Then Print File ARQIMP ASP1+LINHA+ASP2+"\n"
                    wnc  =0
                    LINHA=""
            EndIf
            LINHA=LINHA+Spaces(10)+COMPLETA([Descricao Tipo Pagamento],20,".")+Format("W11.2,EIC",[Valor])
            wnc=wnc+1

            TOT_FPGTO=TOT_FPGTO+[Valor]
            If [Tipo de Pagamento]="V" Then TOT_AVISTA=TOT_AVISTA+[Valor] EndIf
            Skip
            If EOT() Then QuitLoop EndIf
          EndWhile
          If wnc=3
             Then Print File ARQIMP ASP1+LINHA+ASP2+"\n"
                  LINHA=""
          EndIf
          LINHA=LINHA+Spaces(10)+COMPLETA("* TOTAL",20,".")+Format("W11.2,EIC",TOT_FPGTO)
          Print File ARQIMP ASP1+LINHA+ASP2+"\n"
     Else Print File ARQIMP ASP1+""+ASP2+"\n"
  EndIf
  Moveto "Answer"

  Print File ARQIMP ASP1+" "+ASP2+"\n"

  TOT_AVEND=(TOT_SAIDA+TOT_COMPL)-(TOT_RETOR+TOT_BONIF+TOT_TROCA+TOT_DEVOL)

  TOT_VBRUT=TOT_VENDA+TOT_DESCT+TOT_DESCA

  TOT_DIFAV=TOT_VBRUT-TOT_AVEND
  TOT_DIFPG=TOT_VENDA-TOT_FPGTO
  TOT_DIFCO=(TOT_LFITA+TOT_DESPE)-(TOT_TITUL+TOT_AVISTA)

;   Carregamento   +CompItens      -Retorno -Bonificacao       -Troca   -Devolucao    =A Vender
;     999.999,99   999.999,99    999.999,99   999.999,99   999.999,99   999.999,99   999.999,99
;
;  Venda Liquida    +DesctoVD     +DesctoAP     AcrescAP =Venda Bruta    Diferenca(AV,VB)     DesctoAP   AcrescAP
;     999.999,99   999.999,99    999.999,99   999.999,99   999.999,99   999.999,99             999,99%    999,99%
;
;  Venda Liquida  Forma Pagto     Diferenca (VL,FP)
;     999.999,99   999.999,99    999.999,99
;
;     Total Fita   -Recebidos      -A Vista    -Despesas   =Diferenca
;     999.999,99   999.999,99    999.999,99   999.999,99   999.999,99

  Print File ARQIMP ASP1+Spaces(10)+"   Carregamento +Compl/Item!     -Retorno! -Bonificacao       -Troca   -Devolucao    =A Vender"+ASP2+"\n"
  Print File ARQIMP ASP1+Spaces(15)+
        Format("W10.2,EIC",TOT_SAIDA)+"   "+
        Format("W10.2,EIC",TOT_COMPL)+"    "+
        Format("W10.2,EIC",TOT_RETOR)+"   "+
        Format("W10.2,EIC",TOT_BONIF)+"   "+
        Format("W10.2,EIC",TOT_TROCA)+"   "+
        Format("W10.2,EIC",TOT_DEVOL)+"   "+
        Format("W10.2,EIC",TOT_AVEND)+ASP2+"\n\n"

  Print File ARQIMP ASP1+Spaces(10)+"  Venda Liquida    +DesctoVD     +DesctoAP     AcrescAP  Venda Bruta    Diferenca(AV,VB)"+
                                    "     DesctoAP   AcrescAP"+ASP2+"\n"
  Print File ARQIMP ASP1+Spaces(15)+
        Format("W10.2,EIC",TOT_VENDA)+"   "+
        Format("W10.2,EIC",TOT_DESCT)+"    "+
        Format("W10.2,EIC",TOT_DESCA)+"   "+
        Format("W10.2,EIC",TOT_ACREA)+"   "+
        Format("W10.2,EIC",TOT_VBRUT)+"   "+
        Format("W10.2,EIC",TOT_DIFAV)+"             "+
        Format("W06.2,EIC",Round(((TOT_DESCA/(TOT_VBRUT-TOT_DESCA))*100),2))+"%    "+
        Format("W06.2,EIC",Round(((TOT_ACREA/(TOT_VBRUT-TOT_DESCA))*100),2))+"%"+ASP2+"  \n\n"

  Print File ARQIMP ASP1+Spaces(10)+"  Venda Liquida -Forma Pagto    =Diferenca (VL,FP)"+ASP2+"\n"
  Print File ARQIMP ASP1+Spaces(15)+
        Format("W10.2,EIC",TOT_VENDA)+"   "+
        Format("W10.2,EIC",TOT_FPGTO)+"    "+
        Format("W10.2,EIC",TOT_DIFPG)+ASP2+"\n\n"

  Print File ARQIMP ASP1+Spaces(10)+"     Total Fita -Rec.Titulos      -A Vista    +Despesas   =Diferenca"+ASP2+"\n"
  Print File ARQIMP ASP1+Spaces(15)+
        Format("W10.2,EIC",TOT_LFITA)+"   "+
        Format("W10.2,EIC",TOT_TITUL)+"    "+
        Format("W10.2,EIC",TOT_AVISTA)+"   "+
        Format("W10.2,EIC",TOT_DESPE)+"   "+
        Format("W10.2,EIC",TOT_DIFCO)+ASP2+"\n\n"

  Print File ARQIMP ASP1+Fill("-",137)+ASP2+"\n"

  Print File ARQIMP ASP1+"\f"+ASP2+"\n"

  QuitLoop
EndWhile

TOT_SAIDA=0   TOT_RETOR=0   TOT_VENDA=0
TOT_DESCT=0   TOT_BONIF=0   TOT_TROCA=0
                            TOT_DEVOL=0
TOT_VBRUT=0   TOT_FPGTO=0   TOT_TITUL=0
TOT_DESPE=0   TOT_DESCA=0   TOT_ACREA=0

TIT_SAIDA=0   TIT_VENDA=0   TOT_COMPL=0

SEQ5=0

EndProc    ;  (TotalFinanc)

;*******************************************************************************
;* Rotina p/ Total                                                             *
;*******************************************************************************
Proc Carregamento()

TOT_LFITA=0
TOT_TITUL=0
TOT_DESPE=0

Print File ARQIMP ASP1+Spaces(05)+"***  A C E R T O"+ASP2+"\n"
Print File ARQIMP ASP1+Spaces(10)+"***  F I T A  F I N A N C E I R A"+ASP2+"\n"

Moveto "AcCarrgV"
Moveto [Numero_Carregamento]
Locate CARANT
If RetVal
   Then
        wnc  =0
        LINHA=""
        While [Numero_Carregamento]=CARANT

          If wnc=3
             Then Print File ARQIMP ASP1+LINHA+ASP2+"\n"
                  wnc  =0
                  LINHA=""
          EndIf
          LINHA=LINHA+Spaces(10)+COMPLETA([Descricao Tipo Pagamento],20,".")+Format("W11.2,EIC",[Valor])
          wnc=wnc+1

          TOT_LFITA=TOT_LFITA+[Valor]
          Skip
          If EOT() Then QuitLoop EndIf
        EndWhile
        If wnc=3
           Then Print File ARQIMP ASP1+LINHA+ASP2+"\n"
                LINHA=""
        EndIf
        LINHA=LINHA+Spaces(10)+COMPLETA("* TOTAL",20,".")+Format("W11.2,EIC",TOT_LFITA)
        Print File ARQIMP ASP1+LINHA+ASP2+"\n"
   Else Print File ARQIMP ASP1+""+ASP2+"\n"
EndIf

Print File ARQIMP ASP1+""+ASP2+"\n"
Print File ARQIMP ASP1+Spaces(10)+"***  V E I C U L O"+ASP2+"\n"

ENCONTRADO=False
Moveto "AcCarrgC"
Moveto [Numero_Carregamento]
Locate CARANT
If RetVal
   Then ENCONTRADO=True
EndIf

Print File ARQIMP ASP1+Spaces(10)+"Placa       Km Saida  Km Chegada  Km Rodado   Comb/Lts  Media "+ASP2+"\n"
If ENCONTRADO
   Then Print File ARQIMP ASP1+Spaces(10)+
              Format("W10,AL",[Placa do Veiculo])+" "+
              Format("W09.1,EI",[Km Saida  ])   +"   "+
              Format("W09.1,EI",[Km Chegada])   +"  "+
              Format("W09.1,EI",[Km Rodado ])   +"  "+
              Format("W09.2,EIC",[Litros Combustivel])+"  "+
              Format("W05.1,EIC",[Media Consumo     ])+" Km/Lt"+ASP2+"\n"
   Else Print File ARQIMP ASP1+""+ASP2+"\n"
EndIf
Print File ARQIMP ASP1+""+ASP2+"\n"

Print File ARQIMP ASP1+Spaces(10)+"***  D E S P E S A S"+ASP2+"\n"
If ENCONTRADO
   Then
        TOT_DESPE=[Total Despesas]

        Print File ARQIMP ASP1+Spaces(10)+"Combustivel  Hospedagem    Refeicao  Manutencao      Outras       Total"+ASP2+"\n"
        Print File ARQIMP ASP1+Spaces(10)+
              Format("W11.2,EIC",[Valor Combustivel ])+"  "+
              Format("W10.2,EIC",[Despesas Hospedagem])+"  "+
              Format("W10.2,EIC",[Despesas Refeicao  ])+"  "+
              Format("W10.2,EIC",[Despesas Manutencao])+"  "+
              Format("W10.2,EIC",[Despesas Outras    ])+"  "+
              Format("W10.2,EIC",[Total Despesas     ])+ASP2+"\n"
   Else Print File ARQIMP ASP1+""+ASP2+"\n"
EndIf
Print File ARQIMP ASP1+""+ASP2+"\n"

Print File ARQIMP ASP1+Fill("-",137)+ASP2+"\n"

Moveto "Answer"

EndProc


;*******************************************************************************
;* Rotina p/ Geracao de Pedidos de Retorno/Complemento                         *
;*******************************************************************************
Proc Gera_Pedidos()
AGUARDE("Aguarde, gerando pedidos")

MSG="Verificar gera‡„o do Pedido !// //"

;**** Complemento de Manifesto ****
If Not IsEmpty(Tabela5)
   Then
        INICIO=True
        DESTIN="011"

        View Tabela1
        View "NotaC"
        View "PedidoC"
        View "PedidoI"
        CoEdit Tabela5
        Scan
          CODEMP=[Codigo da Empresa  ]
          NCARRG=[Numero_Carregamento]

          If INICIO
             Then If Not Grava_PedidoC()
                     Then QuitLoop
                  EndIf
          EndIf
          Grava_PedidoI([Codigo do Item],[Complemento_Qtd],[Complemento_Vr])
        EndScan
        Do_It!
        ClearAll
EndIf

;**** Retorno de Manifesto ****
INICIO=True
DESTIN="015"

View Tabela1
View "NotaC"
View "PedidoC"
View "PedidoI"
CoEdit "Answer"
Scan
  CODEMP=[Codigo da Empresa  ]
  NCARRG=[Numero_Carregamento]

  QTDDIFER=[Saida_Qtd]-([Retorno_Qtd]+[Venda_Qtd]+[Bonif_Qtd]+[Troca_Qtd])

  If QTDDIFER>0
     Then If INICIO
             Then If Not Grava_PedidoC()
                     Then QuitLoop
                  EndIf
          EndIf
          Grava_PedidoI([Codigo do Item],QTDDIFER,[Saida_Vr])
  EndIf

EndScan
Do_It!
ClearAll
EndProc

;*******************************************************************************
;* Rotina p/ Gravar PedidoC                                                    *
;*******************************************************************************
Proc Grava_PedidoC()

INICIO=False

Moveto Tabela1
Moveto [Codigo da Empresa]
Locate CODEMP, NCARRG
If RetVal
   Then NUMDOC=[Numero do Documento]
        SERDOC=[Serie do Documento ]
   Else Moveto "Answer"
        Mensagem("Erro ao localizar Carregamento !")
        Return False
EndIf

Moveto "NotaC"
Moveto [Codigo da Empresa]
Locate CODEMP, NUMDOC, SERDOC
If Not RetVal
   Then Moveto "Answer"
        Mensagem("Erro ao localizar Nota de Manifesto !")
        Return False
EndIf

Moveto "PedidoC"
While True
  End
  Moveto [Numero do Pedido]
  If Numero_Lancamento("Interno","Locked_Down")
     Then PEDIDO = PROXLANCTO_NLANC
          Release Vars PROXLANCTO_NLANC
          quitloop
  EndIf    
EndWhile


;Moveto [Numero do Pedido]
;While True
;  End 
;  If Numero_Lancamento("Interno","")
;     Then PEDIDO = PROXLANCTO_NLANC
;  EndIf  
;  Down
;  [Numero do Pedido]=PEDIDO
;  If Not IsLockRecord()
;     Then QuitLoop
;     Else Del
;  EndIf
;EndWhile

[Codigo da Empresa       ]=[NotaC->Codigo da Empresa]
[Situacao do Pedido      ]="ABERTO"
[Data de Emissao         ]=Today()
[Data de Entrega         ]=Today()
[Codigo da Destinacao    ]=DESTIN
[Codigo                  ]=[NotaC->Codigo]
[Consumidor Final        ]="N"
[Codigo do Representante ]=[NotaC->Codigo do Representante ]
[Codigo da Tabela        ]=[NotaC->Codigo da Tabela        ]
[Condicao de Pagamento   ]=[NotaC->Condicao de Pagamento   ]
[Forma de Pagamento      ]=[NotaC->Forma de Pagamento      ]
[Codigo da Transportadora]=[NotaC->Codigo da Transportadora]
[Frete por Conta         ]=[NotaC->Frete por Conta         ]
[Placa do Veiculo        ]=[NotaC->Placa do Veiculo        ]
[UF Veiculo              ]=[NotaC->UF Veiculo              ]
[Frete Incluso na Nota   ]=":"
[Numero_Carregamento     ]=[NotaC->Numero_Carregamento     ]

If DESTIN="011"
   Then [Observacao na Nota Fiscal]="COMPLEMENTO DE ITEN(S) DO MANIFESTO NF No "+
        [NotaC->Numero do Documento]+" DE "+Format("D13",[NotaC->Data de Emissao])+"."
EndIf

MSG=MSG+"Pedido: "+PEDIDO+" - "+[Descricao da Destinacao]+"// //"
UnLockRecord

If DESTIN="011"
   Then Moveto Tabela5
   Else Moveto "Answer"
EndIf

SEQI=0

Return True
EndProc

;*******************************************************************************
;* Rotina p/ Gravar PedidoI                                                    *
;*******************************************************************************
Proc Grava_PedidoI(ITEM,QTD,VR)
SEQI=SEQI+1

Moveto "PedidoI"
End
Down
[Numero do Pedido     ]=PEDIDO
[Item do Pedido       ]=SEQI
[Codigo do Item       ]=ITEM
[Quantidade           ]=QTD
[Preco Unitario       ]=VR
[Preco Unitario Tabela]=[Preco Unitario              ]
[Preco Total          ]=[Quantidade]*[Preco Unitario ]

If [Aliquota de ICMS]>0
   Then [Valor do ICMS]=NDecimal(([Preco Total]*[Aliquota de ICMS])/100,2)
EndIf
[Codigo da Tabela     ]=[NotaC->Codigo da Tabela     ]

UnLockRecord

If DESTIN="011"
   Then Moveto Tabela5
   Else Moveto "Answer"
EndIf

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_NCARREG"       : Campo="TG_EMPRESA"
            Case Campo="TG_OPPED"         : Campo="TG_NCARREG"
            Case Campo="TG_OPITE"         : Campo="TG_OPPED"
            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_NCARREG"
                    Case Campo="TG_NCARREG" :
                         If VSDGNOMNCARREG="MANIFESTO"
                            Then Campo="TG_OPPED"
                            Else Mensagem("Tipo carregamento invalido !")
                         EndIf
                    Case Campo="TG_OPPED"   :
                         If Not CheckTG_OPPED[1]
                            Then Campo="TG_OPITE"
                            Else Campo="YES"
                                 VSDGOPITE    =""
                                 VSDGDESCOPITE=""
                         EndIf
                    Case Campo="TG_OPITE"   : Campo="YES"
                         VSDGOPITE=ControlValue("TG_OPITE")
                         If VSDGOPITE="D"
                            Then VSDGDESCOPITE="C/ DIFERENCA"
                            Else VSDGOPITE    ="T"
                                 VSDGDESCOPITE="TODOS"
                         EndIf
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
  Case Campo="TG_NCARREG":
     MSG_CAMPO="Informe o N£mero do Carregamento"
  Case Campo="TG_OPPED":
     MSG_CAMPO="Defina a op‡„o"
     MensagemCheckBoxes()
  Case Campo="TG_OPITE":
     MSG_CAMPO="Imprimir itens: T=Todos  D=com Diferen‡a"
Endswitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

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

VSDGEMPRESA =""
VSDGNCARREG =""
Array TG_OPPED[1]
TG_OPPED[1]="Gerar Pedidos c/ Retornos/Complementos"

Array CheckTG_OPPED[ArraySize(TG_OPPED)]
CheckTG_OPPED[1]=False

While True

  ShowDialog "Resumo de Acerto/Manifesto/Complementos" 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 72

    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 "Carregamento" For "TG_NCARREG"
    Accept @ 03,01 Width 9  "A6"  Picture "[&,#][#*#]" Tag "TG_NCARREG"    To VSDGNCARREG
    Accept @ 03,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMNCARREG" To VSDGNOMNCARREG

    CheckBoxes @ 05,00 Height 1 Width 50 Tag "TG_OPPED"
    TG_OPPED[1] to CheckTG_OPPED[1]

    Label  @ 00,35 "Op‡„o de Itens" For "TG_OPITE"
    Accept @ 01,39 Width 04 "A1"  Picture "D,T" Tag "TG_OPITE" To VSDGOPITE
    Accept @ 01,44 Width 25 "A20"  Picture "!*!" Tag "TG_DESCOPITE" To VSDGDESCOPITE

    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 Not CheckTG_OPPED[1]
     Then DISPOSITIVO()
          If OK=""  Then Loop EndIf
  EndIf

  AGUARDE("Aguarde, gerando o relat¢rio")

  Tabela1=Cria_Temp(PrivDir())
  Copy "\\Base\\Sistemas\\Vendas\\RM_0980a" Tabela1
  Tabela2=Cria_Temp(PrivDir())
  Copy "\\Base\\Sistemas\\Vendas\\RM_0980b" Tabela2
  Tabela3=Cria_Temp(PrivDir())
  Copy "\\Base\\Sistemas\\Vendas\\RM_0980c" Tabela3
  Tabela4=Cria_Temp(PrivDir())
  Copy "\\Base\\Sistemas\\Vendas\\RM_0980d" Tabela4
  Tabela5=Cria_Temp(PrivDir())
  Copy "\\Base\\Sistemas\\Vendas\\RM_0980e" Tabela5

  Dir_Trab=""
  ;Monta_Dir_Trab(VSDGDTINI,VSDGDTFIM)
  ;While Novo_Dir_Trab()
    Seleciona()
  ;EndWhile

  If IsEmpty(Tabela2)
     Then MENSAGEM("N„o existem registros a processar")
          Delete Tabela1
          Delete Tabela2
          Delete Tabela3
          Delete Tabela4
          Delete Tabela5
          Loop
  EndIf
  Processa()

  If Not CheckTG_OPPED[1]
     Then
          ASP1=""
          ASP2=""
          ARQIMP = DIREPORT+"ACERTO.TXT"
          Switch
            Case OK="A": ARQIMP = DIREPORT+ARQUIVO+".TXT"
            Case OK="V": ASP1="\""
                         ASP2="\""
          EndSwitch
          If IsFile(ARQIMP) 
             Then Deleta_Arquivo(ARQIMP)
          EndIf

          AGUARDE("Imprimindo")

          Imprimir()

          If OK="V"
             Then If IsTable("Answer") Then Delete "Answer" EndIf
                  {Tools} {Copy} {Table} {\\Base\\Sistemas\\Estoque\\Rm_tx250} {Answer} ClearAll
                  {Tools} {ExportImport} {Import} {ASCII} {AppendDelimited} TypeIn ARQIMP Enter
                  {Answer} ClearAll
                  OPCAOPAG="Todas"
                  IMPRIREL("Answer","1")
                  Deleta_Arquivo(ARQIMP)
             Else Mensagem("Impress„o Concluida !")
                  If OK="I"
                     Then ;---- Imprime Arquivo Impressao ------------------------------------------------
                          ImpriArq(ARQIMP)
                  EndIf
          EndIf
     Else Gera_Pedidos()
          MSG=MSG+"Confirmar Pedido antes de Faturar !"
          Mensagem(MSG)
  EndIf

  Delete Tabela1
  Delete Tabela2
  Delete Tabela3
  Delete Tabela4
  Delete Tabela5
  Delete "Answer"

EndWhile
ClearAll
Release Vars All
Release Procs All
