public void Alta(LINEA_VENTA objeto) { using (SIST_SUPERMERCADOEntities ctx = SIST_SUPERMERCADOEntities.ObtenerInstancia()) { ctx.LINEA_VENTA.AddObject(objeto); ctx.SaveChanges(); } }
public void Modificacion(LINEA_VENTA objeto) { using (SIST_SUPERMERCADOEntities ctx = SIST_SUPERMERCADOEntities.ObtenerInstancia()) { ctx.LINEA_VENTA.Attach(objeto); ctx.ObjectStateManager.ChangeObjectState(objeto, System.Data.EntityState.Modified); ctx.SaveChanges(); } }
public LINEA_VENTA AltaConRetorno(LINEA_VENTA objeto) { using (SIST_SUPERMERCADOEntities ctx = SIST_SUPERMERCADOEntities.ObtenerInstancia()) { ctx.LINEA_VENTA.AddObject(objeto); ctx.SaveChanges(); return ObtenerPorID(objeto.LIN_ID); } }
//public void BajaLogica(LINEA_VENTA entidad) //{ // entidad.CLI_ESTADO = false; // mLINEA_VENTA.Modificacion(); //} public void BajaFisica(LINEA_VENTA entidad) { mLINEA_VENTA.Baja(entidad); }
public void Modificacion(LINEA_VENTA entidad) { mLINEA_VENTA.Modificacion(entidad); }
public void Alta(LINEA_VENTA entidad) { mLINEA_VENTA.Alta(entidad); }
public LINEA_VENTA AltaConRetorno(LINEA_VENTA entidad) { return mLINEA_VENTA.AltaConRetorno(entidad); }
/// <summary> /// Crear un nuevo objeto LINEA_VENTA. /// </summary> /// <param name="lIN_ID">Valor inicial de la propiedad LIN_ID.</param> /// <param name="lIN_CANTIDAD">Valor inicial de la propiedad LIN_CANTIDAD.</param> /// <param name="lIN_PRECIOUNIDAD">Valor inicial de la propiedad LIN_PRECIOUNIDAD.</param> /// <param name="lIN_TOTAL">Valor inicial de la propiedad LIN_TOTAL.</param> /// <param name="vTA_ID">Valor inicial de la propiedad VTA_ID.</param> /// <param name="lIN_PRECIOCOSTO">Valor inicial de la propiedad LIN_PRECIOCOSTO.</param> /// <param name="lIN_PRECIONETO">Valor inicial de la propiedad LIN_PRECIONETO.</param> /// <param name="lIN_TIVA_PORCENTAJE">Valor inicial de la propiedad LIN_TIVA_PORCENTAJE.</param> /// <param name="lIN_DESCRIPCION">Valor inicial de la propiedad LIN_DESCRIPCION.</param> /// <param name="lIN_DESCRESUMIDA">Valor inicial de la propiedad LIN_DESCRESUMIDA.</param> public static LINEA_VENTA CreateLINEA_VENTA(global::System.Int32 lIN_ID, global::System.Decimal lIN_CANTIDAD, global::System.Decimal lIN_PRECIOUNIDAD, global::System.Decimal lIN_TOTAL, global::System.Int32 vTA_ID, global::System.Decimal lIN_PRECIOCOSTO, global::System.Decimal lIN_PRECIONETO, global::System.Decimal lIN_TIVA_PORCENTAJE, global::System.String lIN_DESCRIPCION, global::System.String lIN_DESCRESUMIDA) { LINEA_VENTA lINEA_VENTA = new LINEA_VENTA(); lINEA_VENTA.LIN_ID = lIN_ID; lINEA_VENTA.LIN_CANTIDAD = lIN_CANTIDAD; lINEA_VENTA.LIN_PRECIOUNIDAD = lIN_PRECIOUNIDAD; lINEA_VENTA.LIN_TOTAL = lIN_TOTAL; lINEA_VENTA.VTA_ID = vTA_ID; lINEA_VENTA.LIN_PRECIOCOSTO = lIN_PRECIOCOSTO; lINEA_VENTA.LIN_PRECIONETO = lIN_PRECIONETO; lINEA_VENTA.LIN_TIVA_PORCENTAJE = lIN_TIVA_PORCENTAJE; lINEA_VENTA.LIN_DESCRIPCION = lIN_DESCRIPCION; lINEA_VENTA.LIN_DESCRESUMIDA = lIN_DESCRESUMIDA; return lINEA_VENTA; }
/// <summary> /// Método desusado para agregar un nuevo objeto al EntitySet LINEA_VENTA. Considere la posibilidad de usar el método .Add de la propiedad ObjectSet<T> asociada. /// </summary> public void AddToLINEA_VENTA(LINEA_VENTA lINEA_VENTA) { base.AddObject("LINEA_VENTA", lINEA_VENTA); }
private VENTA Ticket(string color) { //Comprobante = new COMPROBANTE(); //int nroComprobante = (int)TipoComprobante.TIC_ULTIMONUMERO; //Comprobante.TIC_ID = TipoComprobante.TIC_ID; //Comprobante.COM_NROCOMPROBANTE = nroComprobante.ToString(); //TipoComprobante.TIC_ULTIMONUMERO = nroComprobante + 1; //cTIPO_COMPROBANTES.Modificacion(TipoComprobante); //Comprobante = cCOMPROBANTE.AltaConRetorno(Comprobante); VENTA NuevaVta = new VENTA(); NuevaVta.VTA_FECHA = DateTime.Now; NuevaVta.VTA_COLOR = color; NuevaVta.VTA_PORCENTAJEDESCUENTO = Convert.ToDecimal(txtDescuento.Text); NuevaVta.VTA_DIFTARJETA = Convert.ToDecimal(txtDiferenciaTarjeta.Text); NuevaVta.VTA_SUBTOTAL = Convert.ToDecimal(txtSubtotal.Text); NuevaVta.VTA_TOTAL = Convert.ToDecimal(txtTotal.Text); NuevaVta.VTA_CACELADA = false; NuevaVta.FOR_ID = FormaPago.FOR_ID; NuevaVta.CAJ_ID = CajaPerteneciente.CAJ_ID; //NuevaVta.COM_ID = Comprobante.COM_ID; NuevaVta.VTA_MONTOPAGO = Convert.ToDecimal(lblPagaCon.Text); // SI ES FACTURA A ASEGURARSE QUE SE TIENEN LOS DATOS DEL CLIENTE SI ES. if (ClienteConsumidorFinal) { NuevaVta.VTA_CONSUMIDORFINAL = true; } else { NuevaVta.VTA_CONSUMIDORFINAL = false; NuevaVta.CLI_ID_CONSUMIDOR = Cliente.CLI_ID; } NuevaVta = cVENTAS.AltaConRetorno(NuevaVta); foreach (LINEA_VENTA LineaEnGrilla in LineasEnGrilla) { var linea = new LINEA_VENTA { LIN_DESCRIPCION = LineaEnGrilla.LIN_DESCRIPCION, LIN_DESCRESUMIDA = LineaEnGrilla.LIN_DESCRESUMIDA, LIN_TIVA_PORCENTAJE = LineaEnGrilla.LIN_TIVA_PORCENTAJE, LIN_PRECIOCOSTO = LineaEnGrilla.LIN_PRECIOCOSTO, LIN_PRECIOUNIDAD = LineaEnGrilla.LIN_PRECIOUNIDAD, LIN_PRECIONETO = LineaEnGrilla.LIN_PRECIONETO, LIN_CANTIDAD = LineaEnGrilla.LIN_CANTIDAD, LIN_TOTAL = LineaEnGrilla.LIN_TOTAL, LIN_ESTADOPROMO = LineaEnGrilla.LIN_ESTADOPROMO, PRO_ID = LineaEnGrilla.PRO_ID, CAT_ID = LineaEnGrilla.CAT_ID, ENV_ID = LineaEnGrilla.ENV_ID, LIN_GUID = LineaEnGrilla.LIN_GUID, VTA_ID = NuevaVta.VTA_ID }; cLINEA_VENTA.AltaConRetorno(linea); } //SI ES UNA CTA CTE LA FORMA DE PAGO DOY DE ALTA EL MOVIMIENTO DE LA CTA CTE Y ACTUALIZO LA CTA DEL CLIENTE TIPO_MOVIMIENTO eTIPO_MOVIMIENTO = cTIPO_MOVIMIENTOS.ObtenerPorDescripcion(TipoComprobante.TIC_DESCRIPCION); if (FormaPago.FOR_DESCRIPCION == Constantes.Efectivo) { CreaMovimientoCaja(NuevaVta, (decimal)NuevaVta.VTA_TOTAL, "Venta en Efectivo", "VENTA"); } if (FormaPago.FOR_DESCRIPCION == "CTA CTE") { CONTROLADORA.cCTACTE_CLIENTE cCTACTE_CLIENTES = CONTROLADORA.cCTACTE_CLIENTE.ObtenerInstancia(); CONTROLADORA.cMOVIMIENTO_CTACTE_CLIENTE cMOVIMIENTO_CTACTE_CLIENTES = CONTROLADORA.cMOVIMIENTO_CTACTE_CLIENTE.ObtenerInstancia(); if (eTIPO_MOVIMIENTO == null) { eTIPO_MOVIMIENTO = cTIPO_MOVIMIENTOS.ObtenerPorDescripcion(lblTipoComprobante.Text.ToUpper()); } MOVIMIENTO_CTACTE_CLIENTE eMOV_CTA_CTE_CLI = new MOVIMIENTO_CTACTE_CLIENTE(); var cta_cliente = cCLIENTE.ObtenerCtaCteCliente(Cliente); eMOV_CTA_CTE_CLI.TIPM_ID = eTIPO_MOVIMIENTO.TIPM_ID; eMOV_CTA_CTE_CLI.MCCC_VALORMOVIMIENTO = NuevaVta.VTA_TOTAL; eMOV_CTA_CTE_CLI.MCCC_CONCEPTO = Constantes.Debe; eMOV_CTA_CTE_CLI.MCCC_FECHAMOVIMIENTO = NuevaVta.VTA_FECHA; eMOV_CTA_CTE_CLI.MCCC_SALDOMOVIMIENTO = NuevaVta.VTA_TOTAL; eMOV_CTA_CTE_CLI.CCC_ID = cta_cliente.CCC_ID; eMOV_CTA_CTE_CLI.VTA_ID = NuevaVta.VTA_ID; cta_cliente.CCC_SALDO += NuevaVta.VTA_TOTAL; cCTACTE_CLIENTES.Modificacion(cta_cliente); cMOVIMIENTO_CTACTE_CLIENTES.Alta(eMOV_CTA_CTE_CLI); } //PONER QUE PASA CUANDO LA FORMA DE PAGO ES POR CHEQUEY TARJETA Y/O MULTIPLE if (FormaPago.FOR_DESCRIPCION == Constantes.Tarjeta) { Tarjeta = cTARJETA.AltaConRetorno(Tarjeta); NuevaVta.TARJ_ID = Tarjeta.TARJ_ID; } if (FormaPago.FOR_DESCRIPCION == Constantes.Cheque) { Cheque = cCHEQUE.AltaConRetorno(Cheque); NuevaVta.CHE_ID = Cheque.CHE_ID; //VALIDAR QUE SI EL CHEQUE ES MAYOR A LA VENTA GENERA UN MOVIMIENTO DE CAJA TIPO EXTRACCION Y EN LA DESCRIPCION //PONER VUELTO DE CHEQUE EN LA VENTA X. //sino generar la extraccion en caja y mostrar cartel que se generara una extraccion de caja. var totalVta = Convert.ToDecimal(txtTotal.Text); if (Cheque.CHE_VALOR > totalVta) { string vuelto = (Cheque.CHE_VALOR - totalVta).ToString(); MostrarMensajeAdvertencia("Se generara una extraccion de caja, con la diferencia entre el valor del cheque y el total de la venta. Total de la extracion de caja " + vuelto + "."); CreaMovimientoCaja(NuevaVta, Convert.ToDecimal(vuelto), "Vuelto de Cheque Nro: " + Cheque.CHE_NUMERO + ".", "EXTRACCION"); } } if (FormaPago.FOR_DESCRIPCION == Constantes.NotaCredito) { if (NuevaVta == null) { MostrarMensajeAdvertencia("Debe seleccionar una nota de crédito."); NuevaVta = null; return NuevaVta; } NuevaVta.NOT_ID = Nota_Credito.NOT_ID; var totalVta = Convert.ToDecimal(txtTotal.Text); if (Nota_Credito.NOT_TOTAL != totalVta) { MostrarMensajeAdvertencia("El total de la venta tiene que ser igual al total de la nota de crédito."); NuevaVta = null; return NuevaVta; } } if (FormaPago.FOR_DESCRIPCION == Constantes.Multiple) { //SI ES SOLO CHEQUE GENERA MOVIMIENTO DE CAJA PORQUE DA UN VUELTO if (SoloCheques == "Solo Cheques") { decimal totalPagos = 0; foreach (var item in frmVENTAS.ListaMultiplesPagos) { totalPagos += item.CHE_VALOR; } string vuelto = (totalPagos - Convert.ToDecimal(txtTotal.Text)).ToString(); MostrarMensajeAdvertencia("Se generara una extraccion de caja, con la diferencia entre el valor de los cheque y el total de la venta. Total de la extracion de caja $" + vuelto + "."); CreaMovimientoCaja(NuevaVta, Convert.ToDecimal(vuelto), "Vuelto de Cheque Nro: " + frmVENTAS.Cheque.CHE_NUMERO + ".", "EXTRACCION"); } //GENERAR LA MULTIPLE CON LA LISTA DE PAGOS DE MULTIPLE var MultipleNew = new MULTIPLE(); List<CHEQUE> chequesMultiples = new List<CHEQUE>(); List<TARJETA> tarjetasMultiples = new List<TARJETA>(); List<NOTA_CREDITO> notasCreditosMultiples = new List<NOTA_CREDITO>(); decimal totalMultiple = 0; decimal totalMultipleEfectivo = 0; foreach (var item in ListaMultiplesPagos) { switch (item.FORM_PAGO) { case Constantes.Cheque: Cheque = new CHEQUE(); Cheque.BAN_ID = item.BAN_ID; Cheque.CHE_FECHAEMISION = item.CHE_FECHAEMISION; Cheque.CHE_FECHAVENCIMIENTO = item.CHE_FECHAVENCIMIENTO; Cheque.CHE_NUMERO = item.CHE_NUMERO; Cheque.CHE_VALOR = item.CHE_VALOR; chequesMultiples.Add(Cheque); totalMultiple += item.CHE_VALOR; break; case Constantes.NotaCredito: notasCreditosMultiples.Add(item.NOTA_CREDITO); totalMultiple += (decimal)item.NOTA_CREDITO.NOT_TOTAL; break; case Constantes.Tarjeta: var Tarjeta = new TARJETA(); Tarjeta.TTARJ_ID = item.TARJ_TIPO_TARJETA.TTARJ_ID; Tarjeta.TARJ_CUOTAS = item.TARJ_CUOTAS; Tarjeta.TARJ_NUMERO = item.TARJ_NUMERO; Tarjeta.TARJ_DNI = item.TARJ_DNI; Tarjeta.TARJ_DIFTARJETA = item.TARJ_DIFTARJETA; Tarjeta.TARJ_TOTALAPAGAR = item.TARJ_TOTALAPAGAR; Tarjeta.TARJ_MONTOCUOTA = item.TARJ_MONTOCUOTA; Tarjeta.TARJ_TOTAL = item.TARJ_TOTAL; tarjetasMultiples.Add(Tarjeta); totalMultiple += item.TARJ_TOTALAPAGAR; break; case Constantes.Efectivo: MultipleNew.MUL_EFECTIVO = item.EFEC_MONTO; totalMultiple += item.EFEC_MONTO; totalMultipleEfectivo += item.EFEC_MONTO; break; default: break; } } MultipleNew.MUL_MONTO = totalMultiple; cMULTIPLE.Alta(MultipleNew, tarjetasMultiples, chequesMultiples, notasCreditosMultiples); NuevaVta.MUL_ID = MultipleNew.MUL_ID; if (totalMultipleEfectivo != 0) { CreaMovimientoCaja(NuevaVta, totalMultipleEfectivo, "Venta en Efectivo pago Multiple", "VENTA"); } } if (FormaPago.FOR_DESCRIPCION == Constantes.Ficha) { foreach (LINEA_VENTA LineaEnGrilla in LineasEnGrilla) { var linea = new DETALLE_FICHA(); linea.DETF_DESCRIPCION = LineaEnGrilla.LIN_DESCRIPCION; linea.DETF_DESCRESUMIDA = LineaEnGrilla.LIN_DESCRESUMIDA; linea.DETF_PRECIOUNIDAD = LineaEnGrilla.LIN_PRECIOUNIDAD; linea.DETF_CANTIDAD = LineaEnGrilla.LIN_CANTIDAD; linea.DETF_TOTAL = LineaEnGrilla.LIN_TOTAL; linea.DETF_ESTADOPROMO = LineaEnGrilla.LIN_ESTADOPROMO; linea.PRO_ID = LineaEnGrilla.PRO_ID; linea.CAT_ID = LineaEnGrilla.CAT_ID; linea.ENV_ID = LineaEnGrilla.ENV_ID; linea.DETF_FECHA = DateTime.Now; linea.FIC_ID = Ficha.FIC_ID; linea.EMP_ID = eEmpleado.EMP_ID; var Detalle = cDETALLE_FICHA.AltaConRetorno(linea); } } return NuevaVta; }
private void LlenarLineaEnGrilla(PRODUCTO oProducto, CATEGORIA_PRODUCTO oCategoria, decimal? CAT_PRECIO, ENVASE oEnvase, bool ingresaMedianteCodBarra = true) { LINEA_VENTA linea = null; if (oProducto != null) //es producto { //controla la cantidad if (!ControlaCantidad(oProducto, 1)) { MostrarMensajeAdvertencia(Mensajes.ProductoSinStock); return; } picProducto.ImageLocation = oProducto.PRO_IMAGEN; picProducto.SizeMode = PictureBoxSizeMode.StretchImage; txtPromocion.Visible = (oProducto.PRO_ESTADOPROMO == null) ? false : (bool)oProducto.PRO_ESTADOPROMO; decimal GANANCIA = 0; if (oProducto.PRO_ESTADOPROMO == false) GANANCIA = oProducto.PRO_COSTO + Convert.ToDecimal(oProducto.PRO_COSTO * (oProducto.PRO_MARGENGANANCIAREAL / 100)); else GANANCIA = oProducto.PRO_COSTO + Convert.ToDecimal(oProducto.PRO_COSTO * (oProducto.PRO_MARGENPROMO / 100)); if (oProducto.PRO_CODBALANZA != null) //es balanza { if (!ingresaMedianteCodBarra) // si no se ingresa mediante codigo de barra { linea = new LINEA_VENTA(); linea.LIN_DESCRIPCION = oProducto.PRO_DESCRIPCION; linea.LIN_DESCRESUMIDA = oProducto.PRO_DESCRECUMIDA; linea.LIN_TIVA_PORCENTAJE = (decimal)oProducto.TIPO_IVA.TIVA_PORCENTAJE; linea.LIN_PRECIOCOSTO = oProducto.PRO_COSTO; linea.LIN_PRECIOUNIDAD = (oProducto.PRO_ESTADOPROMO == true) ? (decimal)oProducto.PRO_PRECIOPROMO : oProducto.PRO_PRECIOVTA; linea.LIN_PRECIONETO = decimal.Round((oProducto.PRO_COSTO + GANANCIA) * Convert.ToDecimal((oProducto.TIPO_IVA.TIVA_PORCENTAJE / 100) + 1), 3); linea.LIN_CANTIDAD = Convert.ToDecimal(1.ToString("0.000")); linea.LIN_TOTAL = decimal.Round((linea.LIN_PRECIOUNIDAD * linea.LIN_CANTIDAD), 3); linea.LIN_ESTADOPROMO = (oProducto.PRO_ESTADOPROMO == true) ? true : false; linea.PRO_ID = oProducto.PRO_ID; linea.PRODUCTO = oProducto; } else // si se ingresa mediante codigo de barra { string codigoBarra = MetodosComunes.RetornaSoloNumeros(txtCodigoBarra.Text); var DigitoPrecio = codigoBarra.Substring(7, 5); var AntesDeLaComa = DigitoPrecio.Substring(0, 3); var NumDecimal = DigitoPrecio.Substring(3, 2); var precioBalanza = Convert.ToDecimal(AntesDeLaComa + "," + NumDecimal); if (eParametro.PAR_ADMINISTRAR_BALANZA) // toma el precio con el peso de la balanza { linea = new LINEA_VENTA(); linea.LIN_DESCRIPCION = oProducto.PRO_DESCRIPCION; linea.LIN_DESCRESUMIDA = oProducto.PRO_DESCRECUMIDA; linea.LIN_TIVA_PORCENTAJE = (decimal)oProducto.TIPO_IVA.TIVA_PORCENTAJE; linea.LIN_PRECIOCOSTO = oProducto.PRO_COSTO; linea.LIN_PRECIOUNIDAD = (oProducto.PRO_ESTADOPROMO == true) ? (decimal)oProducto.PRO_PRECIOPROMO : oProducto.PRO_PRECIOVTA; linea.LIN_PRECIONETO = decimal.Round(Convert.ToDecimal(linea.LIN_PRECIOUNIDAD / ((linea.LIN_TIVA_PORCENTAJE / 100) + 1)), 3); linea.LIN_CANTIDAD = decimal.Round(Convert.ToDecimal(precioBalanza / linea.LIN_PRECIOUNIDAD), 3); linea.LIN_TOTAL = decimal.Round((linea.LIN_PRECIOUNIDAD * linea.LIN_CANTIDAD), 3); linea.LIN_ESTADOPROMO = (oProducto.PRO_ESTADOPROMO == true) ? true : false; linea.PRO_ID = oProducto.PRO_ID; linea.PRODUCTO = oProducto; } else // toma el precio con la etiqueta { linea = new LINEA_VENTA(); linea.LIN_DESCRIPCION = oProducto.PRO_DESCRIPCION; linea.LIN_DESCRESUMIDA = oProducto.PRO_DESCRECUMIDA; linea.LIN_TIVA_PORCENTAJE = Constantes.PorcentajeIvaDefault; linea.LIN_PRECIOCOSTO = (decimal)precioBalanza; //TODO: ver si esta bien ya que no se sabe el costo de la categoria linea.LIN_PRECIOUNIDAD = Convert.ToDecimal(((decimal)precioBalanza).ToString("0.000")); linea.LIN_PRECIONETO = decimal.Round(Convert.ToDecimal(linea.LIN_PRECIOUNIDAD / ((linea.LIN_TIVA_PORCENTAJE / 100) + 1)), 3); linea.LIN_CANTIDAD = Convert.ToDecimal(1.ToString("0.000")); linea.LIN_TOTAL = Convert.ToDecimal(((decimal)precioBalanza).ToString("0.000")); linea.LIN_ESTADOPROMO = (oProducto.PRO_ESTADOPROMO == true) ? true : false; linea.PRO_ID = oProducto.PRO_ID; linea.PRODUCTO = oProducto; } } } else //es producto { linea = new LINEA_VENTA(); linea.LIN_DESCRIPCION = oProducto.PRO_DESCRIPCION; linea.LIN_DESCRESUMIDA = oProducto.PRO_DESCRECUMIDA; linea.LIN_TIVA_PORCENTAJE = (decimal)oProducto.TIPO_IVA.TIVA_PORCENTAJE; linea.LIN_PRECIOCOSTO = oProducto.PRO_COSTO; linea.LIN_PRECIOUNIDAD = (oProducto.PRO_ESTADOPROMO == true) ? (decimal)oProducto.PRO_PRECIOPROMO : oProducto.PRO_PRECIOVTA; linea.LIN_PRECIONETO = decimal.Round((oProducto.PRO_COSTO + GANANCIA) * Convert.ToDecimal((oProducto.TIPO_IVA.TIVA_PORCENTAJE / 100) + 1), 3); linea.LIN_CANTIDAD = Convert.ToDecimal(1.ToString("0.000")); linea.LIN_TOTAL = decimal.Round((linea.LIN_PRECIOUNIDAD * linea.LIN_CANTIDAD), 3); linea.LIN_ESTADOPROMO = (oProducto.PRO_ESTADOPROMO == true) ? true : false; linea.PRO_ID = oProducto.PRO_ID; linea.PRODUCTO = oProducto; } } if (oCategoria != null) //es categoria { linea = new LINEA_VENTA(); linea.LIN_DESCRIPCION = oCategoria.CAT_DESCRIPCION; linea.LIN_DESCRESUMIDA = oCategoria.CAT_DESCRIPCION; linea.LIN_TIVA_PORCENTAJE = Constantes.PorcentajeIvaDefault; linea.LIN_PRECIOCOSTO = (decimal)CAT_PRECIO; //TODO: ver si esta bien ya que no se sabe el costo de la categoria linea.LIN_PRECIOUNIDAD = Convert.ToDecimal(((decimal)CAT_PRECIO).ToString("0.000")); linea.LIN_PRECIONETO = decimal.Round(Convert.ToDecimal(linea.LIN_PRECIOUNIDAD / ((linea.LIN_TIVA_PORCENTAJE / 100) + 1)), 3); linea.LIN_CANTIDAD = Convert.ToDecimal(1.ToString("0.000")); linea.LIN_TOTAL = decimal.Round((linea.LIN_PRECIOUNIDAD * linea.LIN_CANTIDAD), 3); linea.LIN_ESTADOPROMO = false; linea.CAT_ID = oCategoria.CAT_ID; linea.CATEGORIA_PRODUCTO = oCategoria; } if (oEnvase != null) //es envase { linea = new LINEA_VENTA(); linea.LIN_DESCRIPCION = oEnvase.ENV_DESCRIPCION; linea.LIN_DESCRESUMIDA = oEnvase.ENV_DESCRIPCION; linea.LIN_TIVA_PORCENTAJE = Constantes.PorcentajeIvaDefault; linea.LIN_PRECIOCOSTO = oEnvase.ENV_PRECIO_COSTO; linea.LIN_PRECIOUNIDAD = oEnvase.ENV_PRECIO; linea.LIN_PRECIONETO = decimal.Round(Convert.ToDecimal(linea.LIN_PRECIOUNIDAD / ((linea.LIN_TIVA_PORCENTAJE / 100) + 1)), 3); linea.LIN_CANTIDAD = Convert.ToDecimal(1.ToString("0.000")); linea.LIN_TOTAL = decimal.Round((linea.LIN_PRECIOUNIDAD * linea.LIN_CANTIDAD), 3); linea.LIN_ESTADOPROMO = false; linea.ENV_ID = oEnvase.ENV_ID; linea.ENVASE = oEnvase; } linea.INGRESAMEDIANTECODBARRA = ingresaMedianteCodBarra; linea.LIN_GUID = Guid.NewGuid().ToString(); AgregarLineasEnGrilla(linea); LlenaLabelTotales(); ControlaStock(oProducto, oCategoria, oEnvase); if (dgvGrilla.Rows.Count > 0) { dgvGrilla.CurrentCell = dgvGrilla.Rows[dgvGrilla.Rows.Count - 1].Cells[0]; } if ((oProducto != null && oProducto.PRO_GRANEL == true) || (oProducto != null && oProducto.PRO_CODBALANZA != null && !ingresaMedianteCodBarra)) { btnCantidad(); //abre frmCantidad } Nuevo_Item(); }
private void LlenaGrillaDesdePresupuesto() { var LineasEnGrillaTemporal = new List<LINEA_VENTA>(); var LineasEnGrillaTemporalSinStock = new List<LINEA_VENTA>(); foreach (DETALLE_PRESUPUESTO detallePresupuesto in Presupuesto.DETALLES_PRESUPUESTO) { LINEA_VENTA linea = new LINEA_VENTA(); linea.LIN_DESCRIPCION = detallePresupuesto.DETP_DESCRIPCION; linea.LIN_DESCRESUMIDA = detallePresupuesto.DETP_DESCRIPCION; linea.LIN_TIVA_PORCENTAJE = detallePresupuesto.DETP_TIVA_PORCENTAJE; linea.LIN_PRECIOCOSTO = detallePresupuesto.DETP_PRECIOCOSTO; linea.LIN_PRECIOUNIDAD = detallePresupuesto.DETP_PRECIOUNIDAD; linea.LIN_PRECIONETO = detallePresupuesto.DETP_PRECIONETO; linea.LIN_CANTIDAD = detallePresupuesto.DETP_CANTIDAD; linea.LIN_TOTAL = detallePresupuesto.DETP_TOTAL; linea.LIN_ESTADOPROMO = false; linea.PRO_ID = detallePresupuesto.PRO_ID; linea.PRODUCTO = detallePresupuesto.PRODUCTO; linea.CAT_ID = detallePresupuesto.CAT_ID; linea.CATEGORIA_PRODUCTO = detallePresupuesto.CATEGORIA_PRODUCTO; linea.ENV_ID = detallePresupuesto.ENV_ID; linea.ENVASE = detallePresupuesto.ENVASE; linea.LIN_GUID = Guid.NewGuid().ToString(); if (linea.PRODUCTO != null) //es producto { //controla la cantidad, agrega linea si la cantidad es correcta if (ControlaCantidad(linea.PRODUCTO, linea.LIN_CANTIDAD)) { LineasEnGrillaTemporal.Add(linea); } else { decimal result = (decimal)linea.PRODUCTO.PRO_STOCKACTUAL; if (result > 0) //controlo si se puede agregar con la cantidad existente { linea.LIN_CANTIDAD = result; LineasEnGrillaTemporal.Add(linea); } LineasEnGrillaTemporalSinStock.Add(linea); } } } if (LineasEnGrillaTemporalSinStock.Count > 0) { string productoSinStock = string.Empty; foreach (var item in LineasEnGrillaTemporalSinStock) { productoSinStock = string.Concat(productoSinStock, item.PRODUCTO.PRO_DESCRIPCION, "\n"); } MostrarMensajeAdvertencia(string.Format("Los siguientes productos se encuentran sin Stock: \n {0}", productoSinStock)); } LineasEnGrilla = LineasEnGrillaTemporal; }
private void AgregarLineasEnGrilla(LINEA_VENTA linea) { if (LineasEnGrilla == null) LineasEnGrilla = new List<LINEA_VENTA>(); if (!ControlaSumaVenta(linea.LIN_PRECIOUNIDAD, linea.LIN_CANTIDAD, Convert.ToDecimal(txtTotal.Text))) return; if (linea.PRO_ID != null) //es producto { if (linea.PRODUCTO.PRO_CODBALANZA != null) //es balanza { LineasEnGrilla.Add(linea); return; } if (linea.PRODUCTO != null && linea.PRODUCTO.PRO_GRANEL == true) //es granel { LineasEnGrilla.Add(linea); return; } else //es producto { int bandera = 0; foreach (var item in LineasEnGrilla) { //si el producto existe en la grilla entra y le suma la cantidad correcta y pone la bandera en 1 if (item.PRO_ID != null && item.PRO_ID == linea.PRODUCTO.PRO_ID) { item.LIN_CANTIDAD += linea.LIN_CANTIDAD; //CALCULO DEL PRECIO item.LIN_TOTAL = Convert.ToDecimal(decimal.Round(linea.LIN_PRECIOUNIDAD * item.LIN_CANTIDAD, 3).ToString("0.000")); bandera = 1; } } //si no entro xq el producto no existe la bandera esta en 0 y entra para agregarlo a la grilla if (bandera == 0) { LineasEnGrilla.Add(linea); return; } } } if (linea.CAT_ID != null) //es categoria { LineasEnGrilla.Add(linea); return; } if (linea.ENV_ID != null) //es envase { int bandera = 0; foreach (var item in LineasEnGrilla) { //si el producto existe en la grilla entra y le suma la cantidad correcta y pone la bandera en 1 if (item.ENV_ID != null && item.ENV_ID == linea.ENVASE.ENV_ID) { item.LIN_CANTIDAD += linea.LIN_CANTIDAD; //CALCULO DEL PRECIO item.LIN_TOTAL = Convert.ToDecimal(decimal.Round(linea.LIN_PRECIOUNIDAD * item.LIN_CANTIDAD, 3).ToString("0.000")); bandera = 1; } } //si no entro xq el producto no existe la bandera esta en 0 y entra para agregarlo a la grilla if (bandera == 0) { LineasEnGrilla.Add(linea); return; } } }
private void btnCERRARFICHA_Click(object sender, EventArgs e) { //GENERAR LA VENTA SIN ACTUALIZAR STOCK PORQUE EL STOCK YA SE RESTO CUANDO SE VENDIO try { if (dgvGRILLA_FICHAS.CurrentRow == null) { MostrarMensajeAdvertencia(Mensajes.SeleccionarItem); return; } if (!validar_CerrarFicha()) return; var fichaSeleccionada = cFICHA.ObtenerPorID(Convert.ToInt32(dgvGRILLA_FICHAS.CurrentRow.Cells[0].Value)); var fichaAldiaDeHoy = new FICHA(); fichaAldiaDeHoy = cFICHA.CalcularFichaAlDiaDeHoy(fichaSeleccionada); var TotalFicha = fichaAldiaDeHoy.FIC_TOTAL; var rta = MostrarMensajePreguntaSI_NO("Al cerrar la ficha se genera una venta con cuenta corriente.\n Se guardará un movimiento en la cta cte del cliente " + ((CLIENTE)cmbCLIENTE.SelectedItem).CLI_NOMBREYAPELLIDO + ", con un total del movimiento de " + TotalFicha + ". Desea Continuar?\r\n."); if (!rta) return; if (!Valida_Caja()) { return; }; if (!Cobrar_Venta(fichaAldiaDeHoy)) { return; }; using (TransactionScope TRANSACCION = new TransactionScope()) { //Comprobante = new COMPROBANTE(); //TipoComprobante = cTIPO_COMPROBANTES.ObtenerPorDescripcion(Constantes.Ticket); //int nroComprobante = (int)TipoComprobante.TIC_ULTIMONUMERO; //Comprobante.TIC_ID = TipoComprobante.TIC_ID; //Comprobante.COM_NROCOMPROBANTE = nroComprobante.ToString(); //TipoComprobante.TIC_ULTIMONUMERO = nroComprobante + 1; //cTIPO_COMPROBANTES.Modificacion(TipoComprobante); //Comprobante = cCOMPROBANTE.AltaConRetorno(Comprobante); VENTA NuevaVta = new VENTA(); NuevaVta.VTA_FECHA = DateTime.Now; NuevaVta.VTA_COLOR = "B"; NuevaVta.VTA_PORCENTAJEDESCUENTO = 0; NuevaVta.VTA_DIFTARJETA = 0; NuevaVta.VTA_SUBTOTAL = fichaAldiaDeHoy.FIC_TOTAL; NuevaVta.VTA_TOTAL = fichaAldiaDeHoy.FIC_TOTAL; NuevaVta.VTA_CACELADA = false; NuevaVta.FOR_ID = cFORMA_PAGO.ObtenerPorDescripcion(Constantes.CtaCte).FOR_ID; NuevaVta.CAJ_ID = CajaPerteneciente.CAJ_ID; //NuevaVta.COM_ID = Comprobante.COM_ID; NuevaVta.VTA_MONTOPAGO = 0; // SI ES FACTURA A ASEGURARSE QUE SE TIENEN LOS DATOS DEL CLIENTE SI ES. NuevaVta.VTA_CONSUMIDORFINAL = false; NuevaVta.CLI_ID_CONSUMIDOR = Cliente.CLI_ID; NuevaVta = cVENTAS.AltaConRetorno(NuevaVta); foreach (var linea in fichaAldiaDeHoy.DETALLES_FICHA) { LINEA_VENTA NuevaLinea = new LINEA_VENTA(); if (linea.PRO_ID != null) //es producto { NuevaLinea.LIN_DESCRIPCION = linea.DETF_DESCRIPCION; NuevaLinea.LIN_DESCRESUMIDA = linea.DETF_DESCRESUMIDA; NuevaLinea.LIN_PRECIOUNIDAD = (linea.PRODUCTO.PRO_ESTADOPROMO == true) ? (decimal)linea.PRODUCTO.PRO_PRECIOPROMO : linea.PRODUCTO.PRO_PRECIOVTA; NuevaLinea.LIN_CANTIDAD = linea.DETF_CANTIDAD; NuevaLinea.LIN_TOTAL = linea.PRODUCTO.PRO_PRECIOVTA * linea.DETF_CANTIDAD; NuevaLinea.LIN_ESTADOPROMO = linea.DETF_ESTADOPROMO; NuevaLinea.PRO_ID = linea.PRO_ID; NuevaLinea.VTA_ID = NuevaVta.VTA_ID; cLINEA_VENTA.Alta(NuevaLinea); if (linea.DETF_TOTAL != NuevaLinea.LIN_TOTAL) { linea.DETF_TOTAL = NuevaLinea.LIN_TOTAL; cDETALLE_FICHA.Modificacion(linea); } } if (linea.CAT_ID != null) //es categoria { NuevaLinea.LIN_DESCRIPCION = linea.DETF_DESCRIPCION; NuevaLinea.LIN_DESCRESUMIDA = linea.DETF_DESCRESUMIDA; NuevaLinea.LIN_PRECIOUNIDAD = linea.DETF_PRECIOUNIDAD; NuevaLinea.LIN_CANTIDAD = linea.DETF_CANTIDAD; NuevaLinea.LIN_TOTAL = linea.DETF_TOTAL; NuevaLinea.LIN_ESTADOPROMO = linea.DETF_ESTADOPROMO; NuevaLinea.CAT_ID = linea.CAT_ID; NuevaLinea.VTA_ID = NuevaVta.VTA_ID; cLINEA_VENTA.Alta(NuevaLinea); } if (linea.ENV_ID != null) //es envase { NuevaLinea.LIN_DESCRIPCION = linea.DETF_DESCRIPCION; NuevaLinea.LIN_DESCRESUMIDA = linea.DETF_DESCRESUMIDA; NuevaLinea.LIN_PRECIOUNIDAD = linea.ENVASE.ENV_PRECIO; NuevaLinea.LIN_CANTIDAD = linea.DETF_CANTIDAD; NuevaLinea.LIN_TOTAL = linea.ENVASE.ENV_PRECIO * linea.DETF_CANTIDAD; NuevaLinea.LIN_ESTADOPROMO = linea.DETF_ESTADOPROMO; NuevaLinea.ENV_ID = linea.ENV_ID; NuevaLinea.VTA_ID = NuevaVta.VTA_ID; cLINEA_VENTA.Alta(NuevaLinea); if (linea.DETF_TOTAL != NuevaLinea.LIN_TOTAL) { linea.DETF_TOTAL = NuevaLinea.LIN_TOTAL; cDETALLE_FICHA.Modificacion(linea); } } } //SI ES UNA CTA CTE LA FORMA DE PAGO DOY DE ALTA EL MOVIMIENTO DE LA CTA CTE Y ACTUALIZO LA CTA DEL CLIENTE TIPO_MOVIMIENTO eTIPO_MOVIMIENTO = cTIPO_MOVIMIENTOS.ObtenerPorDescripcion(TipoComprobante.TIC_DESCRIPCION); //GENERO LA CUENTA CORRIENTE CONTROLADORA.cCTACTE_CLIENTE cCTACTE_CLIENTES = CONTROLADORA.cCTACTE_CLIENTE.ObtenerInstancia(); CONTROLADORA.cMOVIMIENTO_CTACTE_CLIENTE cMOVIMIENTO_CTACTE_CLIENTES = CONTROLADORA.cMOVIMIENTO_CTACTE_CLIENTE.ObtenerInstancia(); if (eTIPO_MOVIMIENTO == null) { eTIPO_MOVIMIENTO = cTIPO_MOVIMIENTOS.ObtenerPorDescripcion(TipoComprobante.TIC_DESCRIPCION); } MOVIMIENTO_CTACTE_CLIENTE eMOV_CTA_CTE_CLI = new MOVIMIENTO_CTACTE_CLIENTE(); var cta_cliente = cCLIENTESES.ObtenerCtaCteCliente(Cliente); eMOV_CTA_CTE_CLI.TIPM_ID = eTIPO_MOVIMIENTO.TIPM_ID; eMOV_CTA_CTE_CLI.MCCC_VALORMOVIMIENTO = NuevaVta.VTA_TOTAL; eMOV_CTA_CTE_CLI.MCCC_CONCEPTO = Constantes.Debe; eMOV_CTA_CTE_CLI.MCCC_FECHAMOVIMIENTO = NuevaVta.VTA_FECHA; eMOV_CTA_CTE_CLI.MCCC_SALDOMOVIMIENTO = NuevaVta.VTA_TOTAL; eMOV_CTA_CTE_CLI.CCC_ID = cta_cliente.CCC_ID; eMOV_CTA_CTE_CLI.VTA_ID = NuevaVta.VTA_ID; cta_cliente.CCC_SALDO += NuevaVta.VTA_TOTAL; cCTACTE_CLIENTES.Modificacion(cta_cliente); cMOVIMIENTO_CTACTE_CLIENTES.Alta(eMOV_CTA_CTE_CLI); //actualizo la ficha eFicha = fichaAldiaDeHoy; eFicha.VTA_ID = NuevaVta.VTA_ID; eFicha.FIC_FECHACIERRE = DateTime.Now; eFicha.FIC_TOTAL = fichaAldiaDeHoy.FIC_TOTAL; eFicha.FIC_ESTADOAPERTURA = false; cFICHA.Modificacion(eFicha); //actualizo los detalle de la ficha foreach (var item in eFicha.DETALLES_FICHA) { if (item.PRODUCTO != null) // si no es una categoria { item.DETF_PRECIOCOSTO = item.PRODUCTO.PRO_COSTO; item.DETF_PRECIOUNIDAD = (item.PRODUCTO.PRO_ESTADOPROMO == true) ? (decimal)item.PRODUCTO.PRO_PRECIOPROMO : item.PRODUCTO.PRO_PRECIOVTA; item.DETF_ESTADOPROMO = item.PRODUCTO.PRO_ESTADOPROMO; item.DETF_PRECIOUNIDAD = item.PRODUCTO.PRO_PRECIOVTA; item.DETF_TOTAL = item.DETF_PRECIOUNIDAD * item.DETF_CANTIDAD; cDETALLE_FICHA.Modificacion(item); } } cVENTAS.Modificacion(NuevaVta); //TODO: sacar mensaje MostrarMensajeInformativo("La Ficha se realizó con éxito, a continuación se imprimira el Comprobante."); ImprimirReporteFicha(eFicha.FIC_ESTADOAPERTURA); TRANSACCION.Complete(); } ARMA_GRILLA_FICHA(); dgvGRILLA_DETALLE_FICHA.DataSource = null; } catch (Exception ex) { ProcesarExcepcion(ex); } }