DBF/venda

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

ederxc
Usuário Nível 4
Usuário Nível 4
Mensagens: 619
Registrado em: 15 Set 2006 08:40
Localização: Pedreira -SP-

DBF/venda

Mensagem por ederxc »

Programa de venda

Terminal 01 cria um TEMP.dbf na pasta dbf do servidor
Terminal 02 cria um TEMP.dbf na pasta dbf do servidor

ou seja não pode ter 02 DBF´s com mesmo nome na pasta de DBF


-:]
C:\Xharbour\Xdev\Fw\VSX
Avatar do usuário
edutek
Usuário Nível 1
Usuário Nível 1
Mensagens: 45
Registrado em: 21 Set 2005 21:16
Localização: Campo Grande-MS

Re: DBF/venda

Mensagem por edutek »

Cria dbf temporario ammarando no nome do terminal e a hora de acesso

e sua um alias padrao no executavel
Eduardo Mendes
eduardo@conesnet.com.br
xharbour 1.0.0 + gtwvw + dbfcdx + xdev + sqlib + hwgui (printdos e msgs)
clipper 5.2e + exospace
Avatar do usuário
acelconsultoria
Usuário Nível 3
Usuário Nível 3
Mensagens: 231
Registrado em: 10 Jan 2006 17:05
Localização: Itápolis-SP

Re: DBF/venda

Mensagem por acelconsultoria »

Eder...

Pelo que entendi, você precisa criar um DBF temporário para cada terminal na rede. Se está usando apenas um único nome, os terminais não poderão funcionar simultaneamente.

Vou postar um exemplo simples aqui, veja se funciona contigo:

Código: Selecionar todos


Function Main()
 PRIVATE ARQTMP := SPACE(8)
 CriaTMP()  // chama a função de criação do arquivo temporário
 USE &ARQTMP
 ... // restante da sua rotina
Return NIL


Function CriaTMP()
 Local hora := TIME()
 ARQTMP := ("__" + SUBS(HORA,1,2) + SUBS(HORA,4,2) + SUBS(HORA,7,2))
 @ 23,05 SAY "Msg: Gerando Temporário " + ARQTMP + ".DBF"
 DECLARE ESTRU_DBF := {}
 AADD( ESTRU_DBF, {"CODIGO", "N", 5, 0} )
 AADD( ESTRU_DBF, {"QUANT", "N", 10, 3} )
 AADD( ESTRU_DBF, {"VLR_UNIT", "N", 12, 2} )
 DBCREATE( "&ARQTMP", ESTRU_DBF )
RETURN .T. 

Adm. Maickon Sato
Consultoria e Projetos
-------------------------------------------------------
ederxc
Usuário Nível 4
Usuário Nível 4
Mensagens: 619
Registrado em: 15 Set 2006 08:40
Localização: Pedreira -SP-

Re: DBF/venda

Mensagem por ederxc »

É assim da pra fungar , acho que seria impossivel alguem criar DBF´s no mesmo segundo , mas isso tbm pode ser tratado ;)

vlw té++ ({) (X) :-[ (L)
C:\Xharbour\Xdev\Fw\VSX
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: DBF/venda

Mensagem por sygecom »

Para arquivos temporario eu uso a propria pasta TEMP de cada micro, abaixo exemplo:

Código: Selecionar todos

GERAFILE()
SELE ENTRADA
COPY TO (cFILE) FOR DTOS(DATA) >= DTOS(xDATA) .AND. DTOS(DATA) <= DTOS(xDATA1) VIA "DBFCDX"
USE (cFILE) alias RELATOR1 EXCL VIA "DBFCDX"
index on RELATOR1->codpro to (cFILE)
SET index to (cFILE)

SELE RELATOR1
...
...
..
OU 

GERAFILE()
SET DEVICE TO PRINT
set print to (cFILE)
....
...
...

SET PRINTER TO
set device to screen
CHAMAIMP("S",cFILE+".PRN")

Function GERAFILE()
vSIS1 := GETENV("temp")
public cFILE := vSIS1+"\TEMP"+ ALLTRIM( STR( HB_RandomInt(9999) ))
RETURN cFILE
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Re: DBF/venda

Mensagem por rochinha »

Amiguinho

Acho até que não seria necessário criar o temporário a cada venda, ja que o mesmo residirá em uma pasta no terminal, basta entrar no arquivo e limpa-lo com um ZAP, ja que o mesmo não é compartilhado, podendo ser aberto exclusivamente e ZAPeado.

Após a colocação dos itens e caso a venda seja confirmada, faça o APPEND FROM para o arquivo de vendas oficial e coloque o numero de pedido sequencial.

Geralmente uma estrutura de vendas obedece a uma hierarquia de 1 para N, ou seja, 1 pedido para N itens, então voce terá na pasta temporária do terminal 2 .DBFs o de pedido e o de itens.

Ao confirmar a venda, repasse o campo Codigo do Pedido com um numero sequencial de controle para o arquivo de pedidos e para cada um dos itens do pedido e adicione os registros aos arquivos de pedido e itens oficiais via DO..While, variaveis, locks e replaces.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
marcos.gurupi
Usuário Nível 4
Usuário Nível 4
Mensagens: 939
Registrado em: 06 Jul 2004 11:53
Localização: Gurupi-TO

Re: DBF/venda

Mensagem por marcos.gurupi »

Eu uso assim:

Para cada terminal eu crio um dbf novinho na pasta temporaria (somente o arquivo de itens) no final da venda eu gravo o pedido com os dados do fechamento, logo apos eu leio o arq. e gravo os itens, assim eu nunca tive nenhum problema. Agora sobre a impossibilidade de usuarios abrir uma venda no mesmo segunto vc pode contar com isso amigo, eu tb achava q n poderia acontecer mas acontece.

Marcos Roberto
Marcos Roberto
NetService Software
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Re: DBF/venda

Mensagem por rochinha »

Amiguinho Gurupi

Isto também ja aconteceu comigo e hoje não acontece mais pelo fato de usar uma função de autonumeração, a qual postei na sessão codigo fonte neste link.

Ela usa um .DBF de controle e grava variaveis e seus contadores que podem chegar até 999999. Cada variavel é gravada em um registro com seu contador de sequencia.

Este arquivo é aberto em um momento oportuno para pegar o codigo da sequencia, travando o registro, e liberando apos atualiza-lo.

Pode ser criado N variaveis, sem ter de programa-las no sistema, exemplo: ORCAMENTOS, PEDIDOS, CLIENTES, NOTAFISCAL, etc.

Quando precisar saber qual o proximo numero de uma sequencia basta buscar na tabela a variavel que necessita e trazer seu numero, a função se encarrega do travamento e atualização, portanto livrando da existencia de duplicidade de codigo.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Responder