private ControlBusiness.Business.CommonB CreateProductosBL() { ControlEntities ctx = new ControlEntities(); var mockControlRepository = new MockControlRepository(ctx); // var inventBL = new InventarioB(); //var inventBL = new InventarioB(mockControlRepository); var commB = new CommonB(mockControlRepository); commB.CreateEntity(new Producto() { IdProducto = 0, Codigo = "First Producto code", Descripcion = "Descrip 1", Proveedore = new Proveedore() { IdProveedor = 0, Descripcion = "Proveedor One", Telefono = "Tel 1" } }); commB.CreateEntity(new Producto() { IdProducto = 1, Codigo = "Second Producto code", Descripcion = "Descrip 2", Proveedore = new Proveedore() { IdProveedor = 1, Descripcion = "Proveedor 2", Telefono = "Tel 2" } }); commB.CreateEntity(new Producto() { IdProducto = 2, Codigo = "Third Producto code", Descripcion = "Descrip 3", Proveedore = new Proveedore() { IdProveedor = 2, Descripcion = "Proveedor 3", Telefono = "Tel 3" } }); return(commB); }
private int SaveVenta() { var continuar = true; var consecutivo = 0; commB.BeginTran(); try { var venta = new ControlEntity.Venta(); venta.Estado = Enum.GetName(typeof(BaseHelpers.Helpers.Tools.EstatusDocumentosEnum.EstatusDocumentosTypes), 2); venta.Consecutivo = Convert.ToInt16(GetConsecutivo(true)); consecutivo = venta.Consecutivo; venta.Fecha = DateTime.Now; venta.IdCaja = curCaja; venta.IdCliente = Convert.ToInt32(txtCliente.Text); venta.IdUsuario = curUser; // los textos de totales ya tienen el redondeo aplicado // por eso esta bien que los guarde desde ahi venta.TotalDescuentos = Convert.ToDecimal(string.IsNullOrEmpty(this.txtTotalDescuento.Text) ? "0" : this.txtTotalDescuento.Text); venta.TotalImpuestos = Convert.ToDecimal(string.IsNullOrEmpty(this.txtTotalImpuestos.Text) ? "0" : this.txtTotalImpuestos.Text); venta.TotalVenta = Convert.ToDecimal(this.txtGrandTotal.Text); // guarda detalle foreach (var item in detailRep.CartLines) { var ventaDetalle = new ControlEntity.DetalleVenta(); ventaDetalle.Cantidad = item.Cantidad; ventaDetalle.Descuento = item.MontoDescuento; ventaDetalle.IdProducto = item.Producto.IdProducto; ventaDetalle.Precio = item.Producto.PrecioVenta; ventaDetalle.Impuestos = item.Cantidad * (item.Producto.PrecioVenta * item.Producto.Descuento / 100); commB.AddEntity <ControlEntity.DetalleVenta>(ventaDetalle); if (item.Producto.VerificaDisponible) { var existencia = inventBL.GetExistenciaByIdProducto(item.Producto.IdProducto); if (existencia != null) { if (existencia.Cantidad >= item.Cantidad) { /// actualizar costo: get costo existencia.Cantidad -= item.Cantidad; //inventBL.UpdateExistenciaVentas(existencia, item.Cantidad); da error de que no ha insertado encabezado de factura } else { commB.Reload(existencia); lblMensaje.Text = "El producto " + item.Producto.Descripcion + " no posee suficientes existencias para cumplir con la cantidad solicitada, por favor disminuya la cantidad solicitada"; continuar = false; break; } } } /// insertar movimiento de inventario } commB.CreateEntity <ControlEntity.Venta>(venta); if (continuar) { /// salvar pagos foreach (var pago in pagosRep.PagosLines) { switch (pago.FormaPago) { case "Efectivo": /// actualiza saldo caja efectivo if (ventasB.UpdateSaldoCaja(curCaja, pago.MontoAplicado, 0) <= 0) { continuar = false; break; } /// actualiza efectivo si recibido > aplicado var cambio = pago.MontoPagado - pago.MontoAplicado; if (pago.MontoPagado > pago.MontoAplicado) { if (ventasB.UpdateSaldoCaja(curCaja, -(cambio), 0) <= 0) { continuar = false; } } break; case "Tarjeta": case "Cheque": /// actualiza saldo caja documentos if (ventasB.UpdateSaldoCaja(curCaja, 0, pago.MontoAplicado) <= 0) { continuar = false; } /// actualiza efectivo si recibido > aplicado var cambioDocumentos = pago.MontoPagado - pago.MontoAplicado; if (pago.MontoPagado > pago.MontoAplicado) { if (ventasB.UpdateSaldoCaja(curCaja, -(cambioDocumentos), 0) <= 0) { continuar = false; } } break; case "Credito": if (!ActualizaCxc(pago, consecutivo)) { continuar = false; } break; default: break; } /// inserta en pagos documentos: hay que hacer la tabla var newPago = new ControlEntity.Pago(); newPago.IdBanco = pago.Banco; newPago.Estado = "Normal"; newPago.IdCaja = curCaja; newPago.ConsecutivoVentas = consecutivo; newPago.FormaPago = pago.FormaPago; newPago.IdLinea = pago.Linea; newPago.IdTarjeta = pago.Tarjeta; newPago.MontoAplicado = pago.MontoAplicado; newPago.MontoRecibido = pago.MontoPagado; newPago.NumeroChequeTarjeta = pago.Documento; /// save ventasB.SavePago(newPago); } } if (!continuar) { commB.Rollback(); return(0); } commB.Commit(); return(venta.Consecutivo); } catch (Exception ex) { commB.Rollback(); ControlBusiness.BusinessHelpers.General.DoError(ex, "Control", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1); return(0); } }