Clipper/FiveWin - como numera factura en red sin duplicarla

   
Vista:

como numera factura en red sin duplicarla

Publicado por victor luis pineda rivas (3 intervenciones) el 28/08/2008 11:54:09
numerar una factura por varias estaciones
Tengo un pequeño programa de facturación en ambiente windows con Fivewin. Quiero que cuando por ejemplo tres estaciones esten en linia con la mismas bases de datos compartidas no se repita el mismo numero al generar la factura . me esta ocurriendo en alguna de las estaciones se repite. Como Debo Hacer por favor ayudenme
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

RE:como numera factura en red sin duplicarla

Publicado por Antoni Masana (168 intervenciones) el 28/08/2008 12:27:36
Utiliza un fichero compartido y que en el momento de dar un numero en firme a la factura lee del fichero cual es el ultimo numero de factura, sume uno y lo actualice con su correspondiente bloqueo.

Lo de dar un numero en firme es porque si las facturas se crean a mano y se toma el numero al inicio, el operador puede cancelar la factura mientras y entre tanto otra terminal puede haber creado otra factura con el numero siguiente la secuencia de numeración en las facturas seria incompleta.

El numero no se repetida por que todas las estaciones leen de la misma fuente, el mismo contador de facturas.

No se si esto responde a tu pregunta, porque no entiendo como pueden varias estaciones numerar una misma factura.

Si entiendo que varias estaciones pueden crear facturas y puedan llegar a coincidir el numero de factura en facturas diferentes (error de programación).

Tampoco se como numeras las facturas (es un numero correlativo) o cada estacion numera a su aire de por libre ¿Como calculas el numero de factura?

Un saludo
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

RE:como numera factura en red sin duplicarla

Publicado por victor luis pineda rivas (3 intervenciones) el 28/08/2008 12:49:48
tengo un archivo que comparto que posee un campo llamado numfac, y creo un contador en el momento que el usuario entra a facturar a un cliente el tomo el numero de la factura y le suma uno a elcampo( contador ), cuando hay dos usuarios en en modulo de facturar esto toman el mismo numero debe ser correcto, por un usuario puede tener abierto el proceso pero no ha facturado hasta que el cliente decide facturar ejempo una ferreteria, farmacia o supermercado. Los ejemplos anteriores dben llenar la factura y al registrar la misma el primero que registre es el que toma el valor del numero actual y e ese momento debe sumar al campo numfac + 1 para que el siguiente usuario tome el valor siguiente y no el que tenia en ese momento y asi sucesibamente en cada estación. Programa en fivewin 2.0d y clipper 5.3 y blinker 5.0 gracias po responderme pero no habia sido mas claro en el asunto. Me podria solventar en este problema
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

RE:como numera factura en red sin duplicarla

Publicado por Gabriel Pascual (914 intervenciones) el 28/08/2008 15:33:24
Desde mi punto de vista lo mas simple pra evitarnos dolores de cabeza es asignar el numero de factura AL FINAL de la operacion y no al principio, es decir, el numero se asigna hatasta el momento de guardar los datos de la factura y no al momento de comenzar a capturarlos.

La razon de esto es muy simple, que pasa si el usuario decide abortar el proceso de facturacion y ya le hemos asignado un numero a la factura?, el reciclar el numero de la factura es OTRO dolor de cabeza,porque claro no es una factura cancelada , es que simplemente el usuario decidio no terminar la captura porque era la hora de la comida.

Lo que yo hago es lo siguiente:

1) entro al dialogo de facturacion SIN ASIGNAR NUMERO A LA FACTURA.
2) capturar todos los moviemtos de la factur en variables y los items de la factura en un array, asi, si el usuaruio decide "cancelar" captura no pasas nada, los valores capturados desaparece y listo.
3) si el usuario decide "guardar" la factura entonces hago lo siguient: voy aal fichero de consecutivos, BLOQUEO TODO EL FICHERO, para que durante el proceso de guardado nadie pueda usarlo, asigno el numero consecutivo, guardo todos los movientos de la factura y desblqueo
4) la pongo un mensaje al usuario en la pantalla que dice.....Se ha guardado la factura: XXXXX
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

RE:como numera factura en red sin duplicarla

Publicado por Antoni Masana (168 intervenciones) el 29/08/2008 08:51:45
Como muy bien explica Gabriel se debe asignar el numero de Factura al grabarla y nunca antes.

Voy a intentar hacer un ejemplo grafico.

C(n) - Es el numero de caja donde (n) representa el numero
A - Iniciar proceso Factura
E - Entrada de datos
G(n) - Grabar factura donde (n) representa el numero de factura

C1....C2....C3
..A...............
..........A.......A
..L...............L
..L.....L........L
..........G1....L
..L...............G2
..........A.......
..L ..............A
..........L.......
..L...............L
..........L.......G3
..G4............
..........G5....

Explicacion: La caja 1 ha iniciado una factura y mientras entraba datos las cajas 2 y 3 han realizado 3 facturas. La caja 2 a realizado 2 facturas y mientras las tenia abiertas la caja 3 a abierto y finalizado otras 2.

En el momento de grabar se lee del fichero en numero de factura suma 1 y lo graba con su correspondiente bloqueo. Si se hache al inicio el resultado podria haber sido asi:

C1....C2....C3
..A...............
..........A.......A
..L...............L
..L.....L........L
..........G2....L
..L...............G2
..........A.......
..L ..............A
..........L.......
..L...............L
..........L.......G4
..G1............
..........G3....

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

RE:como numera factura en red sin duplicarla

Publicado por Pedro (38 intervenciones) el 29/08/2008 11:20:22
Hola colegas
Yo utilizo lo siguiente el siguiente esquema con dos tablas, una para las cabezeras de facturas, (datos del la factura y datos del cliente) y otra para las lineas que integran la factura.

1.- Ingreso al sistema, otorgo o no un número provisional que es el último + 1
factura->(dbGobottom())
número provisional := factura->ultimo numero + 1
2.- Se ejecutan todas las acciones de captura de la factura (cabezeras y líneas) , bien por arrays o por ficheros temporales. Si el usuario cancela no ha pasado nada, pues no hay nada grabado.
3.- Al finalizar busco el último numero grabado, le sumo 1 y hago un dbappend
con lo que bloqueo automaticamente el registro, mientras se ejecuta esta acción ninguna estacion puede hacer otro dbappend, grabo el registro de cabezera y desbloqueo, retorno ese numero y grabo las líneas con ese numero para asi relacionar las lineas con su cabezera correspondiente.
Con el número de factura asignado, envío la impresión .
En la impresión busco ese numero en cabezeras e imprimo la cabezera, despues busco en las lineas ese numero y mientras coincida, imprimo las lineas.

Espero que te sirva
Un saludo
Pedro
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

RE:como numera factura en red sin duplicarla

Publicado por Luis Ponce (119 intervenciones) el 29/08/2008 16:24:19
Amigo

Lo que tienes que hacer es crear una tabla compartida donde guardes el ultimo numero emitido, luego una funcion antes de imprimir que lo lea, le sume uno y listo, ese es tu siguiente numero a imprimir, lo guardas y asi repites el ciclo.

Saludos
Desde Peru
Luis Ponce
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

RE:como numera factura en red sin duplicarla

Publicado por Raúl (32 intervenciones) el 30/08/2008 19:06:34
Como te dijeron algunos colegas, creo que lo ideal para evitar la duplicidad de los Nros. de Facturas en red, es asignar el Nro. de Factura una vez confirmada la misma, o sea, permitir la carga de todos sus datos y si el Operador la confirma, recien rescatar el nro. de Factura para el movimiento, grabarlo en la cabecera y mandar la impresion si corresponde.

Seguramente existen diferentes maneras de manejar la programación de la facturacion, en la que normalmente usamos una tabla para los datos de la cabecera y otra para los datos de las lineas de detalle verdad?. Algunos prefieren capturar todos los datos en variables y una vez confirmada la operación, recien grabarlos en las tablas, yo normalmente utilizo otro esquema, y es el que va grabando tanto la cabecera como las lineas de detalle a medida que se van registrando. Y lo hago precisamente para permitir que se pueda abandonar la carga de una factura y luego retomarla sin tener que volver a registrar todos los datos de nuevo. Ahora, para usar éste criterio, tengo que utilizar tanto en la cabecera como en las lineas de detalle, UN NRO.UNICO o ID que permita establecer la relación entre ambas tablas sin tener aún asignado el Nro.de Factura.
Tambien utilizo un archivo que denomino generalmente de NROSUNIC en el cual solo almaceno una Clave Numerica de 2 digitos y un Campo (NROCOM)para ir almacenando el ULTIMO NRO. UTILIZADO.
Entonces.. cuando se comienza a dar de Alta una factura, necesito rescatar el NRO.UNICO para esa Factura, entonces accedo al registro correspondiente en la TABLA NROSUNIC, (Por Ejemplo con clave 1).. bloqueo el registro leido, le adiciono 1 al campo NROCOM, lo regrabo y lo luego lo desbloqueo y con eso rescato el NRO.UNICO para la Factura que empiezo a tratar y sus lineas de detalle.

Al concluirse con el tratamiento de la Factura y si el Operador la confirma como correcta, repito el paso para rescatar EL NRO.DE FACTURA accediendo con la clave que corresponda a la Tabla NROSUNIC y una vez rescatado el Nro. de la Factura, Bloqueo el registro de cabecera, regrabo el Nro.de factura y luego desbloqueo.
Ejemplo de Tabla NROSUNIC
Clave 1 para Nros.Unicos de Facturas
Clave 2 para Nros. de Facturas A
Clave 3 para Nros. de Facturas B
etc.

Un Abrazo
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

RE:como numera factura en red sin duplicarla

Publicado por TONY (3 intervenciones) el 09/09/2009 18:45:08
Hola Me podrias proporcionar tu ejemplo de factura por favor
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