FoxPro/Visual FoxPro - Facturacion simultanea con 2 o mas PC

   
Vista:

Facturacion simultanea con 2 o mas PC

Publicado por Jorge Cromer (25 intervenciones) el 05/10/2015 16:52:38
Hola amigos, tengo un pequeño sistema de facturacion (FoxPro 2.6) con el que deseo facturar en simultaneo en 2 o mas PC pero no entiendo como se puede lograr ese cometido. La estructura que uso es obtener de una tabla los items, en pantalla completo la cantidad vendida, etc. luego estos item los paso a otra tabla que le llamo TEMPORAL.DBFcon la finalidad de poder hacer correcciones de la factura antes de imprimir. Luego de imprimir, estos datos los paso a otra tabla ( Ejm. Historica.dbf) y dejo en blanco la tabla TEMPORAL.DBF para otra factura.
Cuando lo conecto en red con otra PC, en ambas tengo lo mismo, es decir si en la PC1 estoy confeccionando la factura 100, en la PC2 igual me sale la factura 100 y lo que deseo es que con la PC2 pueda facturar la 101. Conectado en red, es como tener un espejo de la PC1 en la PC2, esto me sirve si cada PC hace algo diferente, por decir, en una se esta vendiendo y en la otra se esta comprando o consultando precios, etc. pero no para facturar a la vez en simultaneo. Por favor, alguien podria explicarme como deberia ser mi estructura de facturacion para lograr facturar en simultaneo. Como monousuario funciona sin ningun problema.
Muchas gracias por su tiempo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Facturacion simultanea con 2 o mas PC

Publicado por santiago (376 intervenciones) el 05/10/2015 17:57:44
Hola, el asunto no es nuevo, pero si tiene cierto grado de complejidad, depende mucho de tus procesos y estructura de datos, asimismo si estas facturando con diferente numero de serie o con el mismo, si son diferentes talones (a imprimir), o si es el mismo talón para ambas Pc's; básicamente lo que llamamos "punto de venta".

Si gustas puedo hacerte el trabajo de "análisis y solución", pero hay que invertir mas tiempo que la sola respuesta a un problema menor, si estas interesado en la solución, entonces escríbeme al email y nos ponemos de acuerdo.

Atentamente.

Santiago Scheppmann L.
sscheppmann@yahoo.com
Lima - Perú
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Facturacion simultanea con 2 o mas PC

Publicado por Jorge Cromer (25 intervenciones) el 05/10/2015 20:08:59
Gracias amigo Santiago por contestar, pero mi pregunta es solo para saber como es una estructura de facturacion que se estila para facturar en multiples puntos de venta enviando a la cola de impresion (con una sola serie de facturacion). La implementacion o modificacion de mi sistema corre por mi cuenta.
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Facturacion simultanea con 2 o mas PC

Publicado por Fidel José (319 intervenciones) el 05/10/2015 23:01:31
La única forma que te evitará problemas es tener una tabla de numeradores y tomar el número de factura cuando ya diste la orden de grabar. Entonces, el que llega primero bloquea el registro, actualiza el número y se queda con el primer orden. El que llega segundo, si está bloqueado tendrá que esperar hasta que desbloquee y haciendo el mismo proceso se llevará el segundo orden.

La tabla de numeradores debe preveer que los puntos de venta sean varios, y también la posibilidad de que otros formularios trabajen de esa forma (recibos, pedidos, ordenes de pago, disposiciones de fondos, etc.).
Con una sola rutina puedes gestionar el número siguiente para cualquier formulario de los previstos en la tabla y de paso, crear reglas para revisar la numeración cuando cuadre. La tabla también puede tener precisiones sobre si tiene que devolver un numeric, un alfa rellenado con ceros a la izquierda y, en este caso, si es un número compuesto o no ( punto de venta + número de factura , p. ej.).

*Búsqueda del código, (p.ej. "0010002" (en Argentina es Factura A, Punto de venta 2)
*Bloqueo manual del registro. Esto se hace por bucle infinito. Se puede poner un contador de intentos para abortar la operación.
DO WHILE NOT RLOCK()
ENDDO
lnNumeroDevuelto = tabla.numero + 1
REPLACE NUMERO with m.lnNumeroDevuelto
UNLOCK
FLUSH && Flush debe ir salvo que la tabla se cierre inmeditamente.

RETURN lnNumeroDevuelto
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Facturacion simultanea con 2 o mas PC

Publicado por Jorge Cromer (25 intervenciones) el 06/10/2015 01:35:14
Amigo Fidel Jose, te agradesco por tu valioso aporte y por tu tiempo, estoy tomando debida nota para lograr mi proyecto.
Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Facturacion simultanea con 2 o mas PC

Publicado por fernandobussa@hotmail.com (26 intervenciones) el 06/10/2015 14:20:45
la forma mas simple y sin problemas de numeración es crear un punto de venta para cada pc que facturas, la programación como la seguridad del dato es mucho mejor.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Eduardo Ureña

Facturacion simultanea con 2 o mas PC

Publicado por Eduardo Ureña (78 intervenciones) el 06/10/2015 18:14:13
Para complementar lo que dice nuestro colega José Fidel.

En mi caso, creo una función muy simple que llamo consecutivo. En esa función, con dos parámetros, uno tipo character y otro booleano, puedo controlar el consecutivo desde una tabla de numeradores como llama don Fidel.

Así, para evitar esos conflictos y para no utilizar el RLOCK() o el FLOCK() que son funciones que tienden a pegar una de todas las estaciones de trabajo, lo que hago es abrir y cerrar la tabla en donde tengo los consecutivos.

Esta es mi función.
***************
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
FUNCTION Consecutivo(xTipo,xLogico)
	xxArea=ALIAS() &&Guardo el alias para no preocuparme al final de volver a indicar el select luego de llamar la función...
 
	SELECT Configen &&así llamo mi tabla en donde tengo los distintos consecutivos.
	DO CASE
		CASE xTipo="FA" &&Facturas
			xxValor=STRZERO(FA+1,8) &&Esta es otra función, y formatea el número algo así como "00000001"
			IF xLogico
				REPLACE FA WITH FA+1
			ENDIF
		CASE xTipo="NC" &&Notas de Crédito.
			xxValor=STRZERO(NC+1,8)
			IF xLogico
				REPLACE NC WITH NC+1
			ENDIF
		CASE xTipo="ND" &&Notas de Débito.
			xxValor=STRZERO(ND+1,8)
			IF xLogico                                    &&Si el parámetro es positivo, actualizo el valor en la tabla..
				REPLACE ND WITH ND+1
			ENDIF
 
 
	ENDCASE
	USE &&Cierro la tabla para abrirla nuevamente.
	USE Configen IN 0 SHARED
	IF ! EMPTY(xxArea)
		SELECT (xxArea)
	ENDIF
	RETURN xxValor &&Retorno el valor formateado "00000001"

Entonces, puedo igualar al iniciar el campo con:

1
ThisForm.Text1.Value=Consecutivo("FA",.F.)

Lo que me permite indicarle al usuario el posible número de factura que seguiría, cuestión de forma nada más.

Y al enviar la factura a la impresora, y antes de imprimirla,

1
ThisForm.Text1.Value=Consecutivo("FA",.T.)

Con lo que le asigno el número de factura. Ya cuando grabo, sólo me preocupo por asignarle al campo de la tabla en la que ingreso la información:

1
REPLACE FACTURA WITH ThisForm.Text1.Value

Y San se acabó.


De verdad, esto me he ahorrado muchos dolores de cabeza.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar