public async Task <int> GuardarFactura(GuardarFacturaDto factura) { var facturaEntidad = new Factura { ClientesId = factura.ClientesId, Doblado = factura.Doblado, Estado = factura.Estado, SolicitudesId = factura.SolicitudesId, Suplemento = factura.Suplemento, TotalGlobal = factura.TotalGlobal, TotalParcial = factura.TotalParcial }; _context.Set <Factura>().Add(facturaEntidad); await _context.SaveChangesAsync(); foreach (var detalleFactura in factura.DetallesFacturas.DetallesFactura) { var detalleFacturaEntidad = new DetalleFactura { DetalleSolicitudId = detalleFactura.DetalleSolicitudId, Doblado = detalleFactura.Doblado, FacturaId = facturaEntidad.Id, LavadoPlanchado = detalleFactura.LavadoPlanchado, LavadoSeco = detalleFactura.LavadoSeco, Planchado = detalleFactura.Planchado, Total = detalleFactura.Total }; _context.Set <DetalleFactura>().Add(detalleFacturaEntidad); await _context.SaveChangesAsync(); } return(facturaEntidad.Id); }
/// <summary> /// Condiciones de negocio: /// 1) /// </summary> /// <param name="idSolicitud"></param> /// <returns></returns> public async Task <GuardarFacturaDto> GenerarFacturaDesdeSolicitud(int idSolicitud) { var solicitud = await _solicitudAccesoBd.ObtenerSolicitudConDetallePorId(idSolicitud); if (solicitud != default(SolicitudesConDetallesDto)) { double totalParcial = 0; double totalGlobal = 0; double totalDoblado = 0; double totalSuplemento = 0; var listaDetallesFactura = new List <DetallesFacturaDto>(); foreach (var detalleSolicitud in solicitud.ListadoDetallesSolicitud.DetalleSolicitud) { var costo = await _clasificacionPrendasAccesoBd.ObtenerCostoPorIdPrendaClasificacion(detalleSolicitud.PrendasClasificacionId); double lavadoSeco = 0; double lavadoPlanchado = 0; double planchado = 0; double doblado = 0; if (detalleSolicitud.LavadoSeco) { totalParcial += (costo.LavadoSeco * detalleSolicitud.CantidadPrendas); lavadoSeco = costo.LavadoSeco * detalleSolicitud.CantidadPrendas; } if (detalleSolicitud.LavadoPlanchado) { totalParcial += (costo.LavadoPlanchado * detalleSolicitud.CantidadPrendas); lavadoPlanchado = (costo.LavadoPlanchado * detalleSolicitud.CantidadPrendas); } if (detalleSolicitud.Planchado) { totalParcial += (costo.Planchado * detalleSolicitud.CantidadPrendas); planchado = (costo.Planchado * detalleSolicitud.CantidadPrendas); } if (detalleSolicitud.Doblado) { totalParcial += (costo.Doblado * detalleSolicitud.CantidadPrendas); totalDoblado += (costo.Doblado * detalleSolicitud.CantidadPrendas); doblado = (costo.Doblado * detalleSolicitud.CantidadPrendas); } totalGlobal = totalParcial; var detalleFactura = new DetallesFacturaDto { DetalleSolicitudId = detalleSolicitud.Id, Doblado = doblado, LavadoPlanchado = lavadoPlanchado, LavadoSeco = lavadoSeco, Planchado = planchado, Total = (doblado + lavadoPlanchado + lavadoSeco + planchado) }; listaDetallesFactura.Add(detalleFactura); } var listadoDetallesFactura = new ListadoDetallesFacturaDto { DetallesFactura = listaDetallesFactura }; if (solicitud.SuplementoEntrega) { totalSuplemento = totalGlobal * 0.5; totalGlobal = totalGlobal + totalSuplemento; } var guardarFactura = new GuardarFacturaDto { ClientesId = solicitud.ClienteId, Doblado = totalDoblado, Estado = "Facturado", SolicitudesId = solicitud.Id, TotalGlobal = totalGlobal, TotalParcial = totalParcial, Suplemento = totalSuplemento, DetallesFacturas = listadoDetallesFactura }; await _facturaAccesoBd.GuardarFactura(guardarFactura); return(await Task.FromResult(guardarFactura)); } return(default(GuardarFacturaDto)); }
/// <summary> /// Condiciones de negocio: /// 1) Deben existir detalles en la factura /// 2) El valor de la factura debe ser mayor que cero /// </summary> /// <param name="factura"></param> /// <returns></returns> public async Task <int> GuardarFactura(GuardarFacturaDto factura) { var facturaId = await _facturaAccesoBd.GuardarFactura(factura); return(facturaId); }