none
Como hacer un registro de Factura y sus respectivos Ticket? RRS feed

  • Pregunta

  • Por ejemplo:

    En un mes una persona va a un grifo el grifo tiene contrato con el de que le junte todo los consumos (Vales) y al mes todo le entregue facturado.

    Entonces:

    Tengo una Factura: NumFactura, FechaFactura, Proveedor, Descripcion(D-2, G90, G95,G84), Cantidad, PrecioUnit, PrecioTotal, Igv, SubtToTal, Total 

    Son datos que aparecen en una factura. De los cuales solo en mi caso tomo NumFactura, FechaFactura, Proveedor

    Y esta factura contiene 10 vales supongamos del 0001 - 0010 cada uno describe NumVale, FechaVale,PlacaVehicular,NombreConductor,Combustible, Cantidad, PrecioUnit, PrecioTotal.

    Entonces como yo hago para juntar en una base de datos la factura con sus respectivos vales, y que en el datagridview me muestre los datos del vale con sus respectivas Factura, obviamente visiblemente se verian como repetidos algo asi como cuando uno lo registra en un excel.

    La siguiente imagen es una factura con 3 vales de consumo en el mes.

    Como pueden ver el: NombreEmpresa, FechaFact, CodProveedor (son de la factura) y estos se repiten las 3 veces segun el numero de vale que este contiene, CCosto,FechaVale, Placa  y demas son del Vale.

    COmo puedo lograr eso en una base de datos y/o DataGridView?

    Actualmente tengo Un registro de Vales un formulario, otro de Facturas pero solo el form de vales he programado de factura no ya que quiero hacer otro form donde se muestre como la imagen.

    Gracias

    viernes, 26 de febrero de 2016 15:48

Respuestas

  • Hola:

     En una base de datos, tendrias que diseñar dos tablas una para la Ccabecera y otro para el Detalle:

    'Tabla Cabecera
    ---Facturas---
    FacturaId
    NombreEmpresa, 
    FechaFact, 
    CodProveedor
    
    'Tabla Detalle
    ---FacturaDetalle---
    FacturaDetalleId
    FacturaId
    CCosto
    FechaVale
    Placa

     Como veras creas un indice en la tabla Facturas la cual reverenciaras en la tabla Detalles, cuando desees obtener el detalle de una factura usarías una instrucción sql como la siguiente:

    SELECT 
    	FacturaDetalleId
    	FacturaId
    	CCosto
    	FechaVale
    	Placa
    FROM FacturaDetalle
    WHERE FacturaId = 'Aqui el id de la factura

    Ahora, como hacerlo en el formulario, podrías usar el típico Maestro Detalle, en un DataGridView cargas todas las cabeceras y programas el evento CellClick para mandar a llamar a los detalles y mostrar el resultado en un segundo DataGridView, para llamar los detalles usas el query que te puse de ejemplo.

    Espero te quede un poco mas claro como es que debes de trabajar.


    Saludos desde Monterrey, Nuevo León, México!!!

    • Marcado como respuesta AcuTau viernes, 26 de febrero de 2016 17:26
    viernes, 26 de febrero de 2016 16:03

Todas las respuestas

  • Hola:

     En una base de datos, tendrias que diseñar dos tablas una para la Ccabecera y otro para el Detalle:

    'Tabla Cabecera
    ---Facturas---
    FacturaId
    NombreEmpresa, 
    FechaFact, 
    CodProveedor
    
    'Tabla Detalle
    ---FacturaDetalle---
    FacturaDetalleId
    FacturaId
    CCosto
    FechaVale
    Placa

     Como veras creas un indice en la tabla Facturas la cual reverenciaras en la tabla Detalles, cuando desees obtener el detalle de una factura usarías una instrucción sql como la siguiente:

    SELECT 
    	FacturaDetalleId
    	FacturaId
    	CCosto
    	FechaVale
    	Placa
    FROM FacturaDetalle
    WHERE FacturaId = 'Aqui el id de la factura

    Ahora, como hacerlo en el formulario, podrías usar el típico Maestro Detalle, en un DataGridView cargas todas las cabeceras y programas el evento CellClick para mandar a llamar a los detalles y mostrar el resultado en un segundo DataGridView, para llamar los detalles usas el query que te puse de ejemplo.

    Espero te quede un poco mas claro como es que debes de trabajar.


    Saludos desde Monterrey, Nuevo León, México!!!

    • Marcado como respuesta AcuTau viernes, 26 de febrero de 2016 17:26
    viernes, 26 de febrero de 2016 16:03
  • Interesante, voy a revisar eso. Te lo marcare como respuesta sin antes haberlo echo en mi form pero cualquier duda te escribo, pero suena muy interesante lo que mencionas. Tiene Logica, aunque lo que mencionas de cabeceras y eso mas suena como reporte que como datagridview.
    • Editado AcuTau viernes, 26 de febrero de 2016 17:28
    viernes, 26 de febrero de 2016 17:26
  • Hola:

     Es que así es, toda factura contiene una cabecera, los datos generales de la factura y tiene su detalle, los productos o conceptos que irían dentro de la factura, sea un reporte o no, esa es la estructura Cabecera-Detalle para evitar repetir la misma información de Cabecera por cada Detalle.

     Si no deseas ver todas las Cabeceras en un DataGridView entonces podrías diseñar algo como esto de esta forma por medio del Id de la factura mandas a llamar a la Cabecera y que su Detalle se cargue en un DataGridView.


    Saludos desde Monterrey, Nuevo León, México!!!

    viernes, 26 de febrero de 2016 17:38
  • Entiendo lo que me dices el problema es:

    Cierto una factura tiene cabecera y Detalle pero esos detalles yo no los registro porque esos detalles menciona en general lo que cada vale describe es el detalle de la factura 

    si dice la factura en detalle que he consumido gasolina de 95 una cantidad de 150 galones y esto me diera un precio de 1582.23 en los vales ese consumo puede estar dividido en 5 vales

    gasolina95 cantidad 50 

    gasolina95 cantidad 15 

    gasolina95 cantidad 25 

    gasolina95 cantidad 10

    gasolina95 cantidad 50

    cada uno diferente fechas y diferente #vales y diferente consumidores (conductores)

    entonces si bien es cierto que cada factura tiene su detalle yo ese detalle no lo necesito, porque ese detalle lo obtengo unitariamente de cada cantidad de vales que esta factura contenga, Solo me interesa Empresa, NumFactura, Fecha Factura, Proveedor y de los vales el resto.(todos sus campos. Al final el suttotal debe coincidir con el de la factura.

    Ese es el motivo en este caso. 

    Tomare en cuenta lo ultimo podría servirme para otro proyecto. 

    Gracias




    • Editado AcuTau viernes, 26 de febrero de 2016 17:56
    viernes, 26 de febrero de 2016 17:51
  • Sobre la imagen que propones entonces se podria decir que se puede usar  como 

    la base de datos que tengo llamado Factura --- como la cabecera

    la base de datos que tengo llamado DetalleVales--- como el Detalle

    en ambos casos usaria esto?

    SELECT 
    	FacturaDetalleId
    	FacturaId
    	CCosto
    	FechaVale
    	Placa
    FROM FacturaDetalle
    WHERE FacturaId = 'Aqui el id de la factura

    Comprobare hare otro form o vere que pues esa idea en cierta forma tambien puede servirme. Llamar a la factura por el numero de factura y que me muestre el detalle de los vales registrados 

    Pero para que eso se de ambos deben tener una columna en comun? 

    viernes, 26 de febrero de 2016 18:57