Migrei a pouco tempo um prg clipper para o harbour, e agora em alguns clientes reclamam de um certo "retardo" na gravação/finalização em rede.
Ele basicamente faz um order no arquivo para pegar o próximo número da nota, que é composto por ano/sequencial.
Depois faz um append from, e até liberar o edit para imprimir o comprovante.
O executável clipper era metade do tamanho do executável harbour, mas o resto é a mesma rotina.
Somente usava uma lib freetslice. Algum opinião do amigos seria de muita ajuda.
O banco é dbf, e o arquivo índice ntx. No caso de um cliente o arquivo vendas é grande.
Código: Selecionar todos
Do Aguarde With "Cadastrando os dados da Venda"
Select VENDAS
Set Order To 4
Go Bottom
If (Year(hoje) = Year(data))
vnumero = Novo_Codigo("numero", vnumero, .F.)
Else
Set Filter To Year(hoje) = Year(data)
vnumero = Novo_Codigo("numero", vnumero, .F.)
Set Filter To
EndIf
Set Order To 1
Select PLANO_VENDA
If (LastRec() # 1)
Replace All numero With Ven_Numero(vnumero) + "-" + SubStr(numero, 1, 2), ;
cliente With vcliente
Else
Replace numero With Ven_Numero(vnumero) + "-", ;
cliente With vcliente
EndIf
Close
Select CONT_REC
Set Order To 1
Append From &arqplano
If (Len(baixar) # 0)
Seek Ven_Numero(vnumero) + "-" + baixar
If (.Not. CR_Baixa(valor, hoje, .T., vplano_conta, LePDV()))
Mens("Nao foi poss¡vel dar baixa na 1¦ presta‡ao agora.|Aguarde e tente novamente.", 19)
EndIf
EndIf
Select TMP
Replace All numero With Ven_Numero(vnumero), cliente With vcliente
Go Top
If (tipo_venda # 3)
Do While (.Not. Eof())
If (PRODUTOS -> contr_est # "N")
If (quantidade > PRODUTOS -> estoque1)
Select TRANSF_EST
Append Blank
Replace produto With PRODUTOS -> codigo, origem With "2", ;
destino With "1", data With hoje, descricao With "VENDA N§ " + vnumero, ;
quantidade With TMP -> quantidade - PRODUTOS -> estoque1, ;
PRODUTOS -> estoque2 With PRODUTOS -> (estoque1 + estoque2) - TMP -> quantidade, ;
PRODUTOS -> estoque1 With 0
Select TMP
Else
Replace PRODUTOS -> estoque1 With PRODUTOS -> estoque1 - quantidade
EndIf
EndIf
Skip
EndDo
EndIf
Close
Select HIST_VENDA
Append From (arqitens)
Select VENDAS
NovoRegistro()
Replace numero With vnumero, documento With vdocumento, ;
cliente With vcliente, vendedor With vvendedor, data With hoje, ;
total With vvalor_total, plano With vplano,plano_if with Planos->plano_if,;
entregue With venda_entregue
* Observe que este ‚ o valor total da venda e nao com o plano.
Commit
UnLock All
Rest_Aguarde()
i_comprov= "S"
i_plano = "S"
i_priparc = "S"
i_duplicata = "S"
i_cupom="N"
If (PLANOS -> parcelas = 1)
i_plano = "N"
Select PARCELAS
Seek vplano + "01"
If (dias = 0)
i_priparc = "N"
i_duplicata = "N"
EndIf
Else
Select PARCELAS
Seek vplano + "01"
If (dias = 0)
i_priparc = "N"
EndIf
EndIf
Init_Edit(5)
Inc_Edit("Lista para Entrega ======>", "i_comprov", "!", "VSimNao()")
