El 19/04/2016 a las 20:26, Alvaro Herrera escribió:
Kernel escribió:
Hola,

Voy a hacer un proceso de facturacion y necesito asegurar que nadie pueda
facturar en el mismo momento que yo.

¿cuál es la razón para esta restricción?


El problema es el numero de factura, se me podria duplicar, un usuario podria estar haciendo un proceso de 100 facturas y otro solo una, dentro de la misma serie.

Este es el proceso resumido.  (es bdl de 4js)


BEGIN WORK

TRY
          declare aux_3410_serie  cursor  for
                        select  *
                        from    fseries
                        where   fseries.empresa        =  act.empresa
                        and     fseries.serie          >= r.serie_ini
                        and     fseries.serie          <= r.serie_fin
                        order by fseries.serie

        foreach aux_3410_serie  into    aux2.*

                        declare albaranes cursor for
                                select albaranes
                                where serie =  aux2.serie
                                and   fecha >= r.fecha_ini
                                and   fecha <= r.fecha_fin
                                and   .... (limites del usuario)
                                
                        
                        FOREACH albaranes .....
                                                        ......
                                                        ......
                                LET aux2.factura = aux2.factura + 1
                                insert into facturas values
                        (act.empresa,aux2.serie.aux2.factura ......
                                borrar albaran y pasa al historico
                                                
                                update fseries
                                set factura = aux2.factura
                                where   fseries.empresa        =  act.empresa   
                and serie = aux2.serie
                        
                        end foreach
        
                end foreach

        COMMIT WORK
CATCH
        ROLLBACK WORK
END TRY

-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

Responder a