private void AgregarLineasDesdeVenta(VENTA Venta)
        {
            var LineasEnGrillaTemporal = new List<DETALLE_DEVOLUCION>();
            foreach (LINEA_VENTA linea in Venta.LINEAS_VENTA)
            {
                DETALLE_DEVOLUCION detalle = new DETALLE_DEVOLUCION();
                detalle.DDEV_DESCRIPCION = linea.LIN_DESCRIPCION;
                detalle.DDEV_DESCRESUMIDA = linea.LIN_DESCRESUMIDA;
                detalle.DDEV_TIVA_PORCENTAJE = linea.LIN_TIVA_PORCENTAJE;
                detalle.DDEV_PRECIOCOSTO = linea.LIN_PRECIOCOSTO;
                detalle.DDEV_PRECIOUNIDAD = linea.LIN_PRECIOUNIDAD;
                detalle.DDEV_PRECIONETO = linea.LIN_PRECIONETO;
                detalle.DDEV_CANTIDADADEVOLVER = Convert.ToDecimal(0.ToString("0.000"));
                detalle.DDEV_CANTIDAD = linea.LIN_CANTIDAD;
                detalle.DDEV_CANTIDADDEVUELTA = Convert.ToDecimal(0.ToString("0.000"));
                detalle.DDEV_TOTAL = linea.LIN_TOTAL;
                detalle.DDEV_ESTADOPROMO = linea.LIN_ESTADOPROMO;
                detalle.PRO_ID = linea.PRO_ID;
                detalle.PRODUCTO = linea.PRODUCTO;
                detalle.CAT_ID = linea.CAT_ID;
                detalle.CATEGORIA_PRODUCTO = linea.CATEGORIA_PRODUCTO;
                detalle.ENV_ID = linea.ENV_ID;
                detalle.ENVASE = linea.ENVASE;

                detalle.DDEV_GUID = Guid.NewGuid().ToString();
                //AgregarLineasEnGrilla(linea);
                LineasEnGrillaTemporal.Add(detalle);
            }

            LineasEnGrilla = LineasEnGrillaTemporal;
        }
 public void Alta(VENTA objeto)
 {
     using (SIST_SUPERMERCADOEntities ctx = SIST_SUPERMERCADOEntities.ObtenerInstancia())
     {
         ctx.VENTA.AddObject(objeto);
         ctx.SaveChanges();
     }
 }
 public void Modificacion(VENTA objeto)
 {
     using (SIST_SUPERMERCADOEntities ctx = SIST_SUPERMERCADOEntities.ObtenerInstancia())
     {
         ctx.VENTA.Attach(objeto);
         ctx.ObjectStateManager.ChangeObjectState(objeto, System.Data.EntityState.Modified);
         ctx.SaveChanges();
     }
 }
 public VENTA AltaConRetorno(VENTA objeto)
 {
     using (SIST_SUPERMERCADOEntities ctx = SIST_SUPERMERCADOEntities.ObtenerInstancia())
     {
         ctx.VENTA.AddObject(objeto);
         ctx.SaveChanges();
         return ObtenerPorID(objeto.VTA_ID);
     }
 }
 public VENTA AltaConRetorno(VENTA entidad)
 {
     return mVENTAS.AltaConRetorno(entidad);
 }
 public void Alta(VENTA entidad)
 {
     mVENTAS.Alta(entidad);
 }
        private void CargaDataSetVta(VENTA venta)
        {
            dsDatos.Tables["DetalleVta"].Rows.Clear();
            foreach (var LineaVta in venta.LINEAS_VENTA)
            {
                DataRow NuevaFila = dsDatos.Tables["DetalleVta"].NewRow();
                var eDATOS_EMPRESA = cDATOS_EMPRESA.ObtenerTodos().FirstOrDefault();
                NuevaFila["FechaVta"] = venta.VTA_FECHA;
                if (venta.CLIENTE != null)
                {
                    NuevaFila["Cliente"] = venta.CLIENTE.CLI_NOMBREYAPELLIDO;
                    NuevaFila["Provincia"] = venta.CLIENTE.LOCALIDAD.PROVINCIA.PCIA_DESCRIPCION;
                    NuevaFila["Localidad"] = venta.CLIENTE.LOCALIDAD.LOC_DESCRIPCION;
                    NuevaFila["DomicilioC"] = venta.CLIENTE.CLI_DIRECCION;
                    NuevaFila["TelFijo"] = venta.CLIENTE.CLI_TELFIJO;
                    NuevaFila["TelCelular"] = venta.CLIENTE.CLI_TELCEL;
                }
                else
                {
                    NuevaFila["Cliente"] = Constantes.ConsumidorFinal;
                    NuevaFila["Provincia"] = "-";
                    NuevaFila["Localidad"] = "-";
                    NuevaFila["DomicilioC"] = "-";
                    NuevaFila["TelFijo"] = "-";
                    NuevaFila["TelCelular"] = "-";
                }

                NuevaFila["Empresa"] = eDATOS_EMPRESA.DEMP_RAZONSOCIAL;
                NuevaFila["Cuit"] = eDATOS_EMPRESA.DEMP_CUIT;
                NuevaFila["Telefono"] = eDATOS_EMPRESA.DEMP_TELEFONO;
                NuevaFila["Domicilio"] = eDATOS_EMPRESA.DEMP_DOMICILIO;

                //producto, cantidad, precio unicad, subtotal,
                NuevaFila["Producto"] = LineaVta.LIN_DESCRIPCION;
                NuevaFila["Cantidad"] = LineaVta.LIN_CANTIDAD;
                NuevaFila["$Unidad"] = LineaVta.LIN_PRECIOUNIDAD;
                NuevaFila["$subtotalLinea"] = LineaVta.LIN_TOTAL;

                //datos de la venta
                //subtotal, descuento, dif tarjeta, total de la venta
                NuevaFila["$SubtotalVta"] = LineaVta.VENTA.VTA_SUBTOTAL;
                NuevaFila["$Descuento"] = LineaVta.VENTA.VTA_PORCENTAJEDESCUENTO;
                NuevaFila["$DiferenciaTarjeta"] = LineaVta.VENTA.VTA_DIFTARJETA;
                NuevaFila["$TotalVenta"] = LineaVta.VENTA.VTA_TOTAL;

                dsDatos.Tables["DetalleVta"].Rows.Add(NuevaFila);
            }
        }
 private void LlenaGrilla(VENTA venta)
 {
     LineasEnGrilla = venta.LINEAS_VENTA.ToList();
 }
        private int? ImprimirFiscal(List<LINEA_VENTA> ImprimirLineasEnGrilla, VENTA venta)
        {
            if (!ImpresoraOK)
            {
                MostrarMensajeInformativo("Falla de impresora");
                return null;
            }
            else
            {
                var retornoImpresion = 0;

                #region IMPRIME TICKET
                if (TipoComprobante.TIC_DESCRIPCION == "TICKET")
                {
                    var ticketFiscal = new TicketFiscal();
                    ticketFiscal.items = new List<TicketFiscalItem>();
                    foreach (LINEA_VENTA LineaEnGrilla in ImprimirLineasEnGrilla)
                    {
                        var item = new TicketFiscalItem();
                        item.DescripcionExtra1 = (LineaEnGrilla.LIN_ESTADOPROMO == true) ? "Articulo en PROMOCION" : "";
                        item.DescripcionExtra2 = "";
                        item.DescripcionExtra3 = "";
                        item.DescripcionExtra4 = "";
                        item.DescripcionItem = (LineaEnGrilla.LIN_DESCRESUMIDA.Length > 27) ? LineaEnGrilla.LIN_DESCRESUMIDA.Substring(0, 27) : LineaEnGrilla.LIN_DESCRESUMIDA.ToString();
                        item.Cantidad = (LineaEnGrilla.LIN_CANTIDAD * 10000).ToString("#");
                        item.PrecioUnitario = (LineaEnGrilla.LIN_PRECIOUNIDAD * 10000).ToString("#");
                        item.TasaIva = "0";
                        item.ImpuestosInternosFijos = "0";
                        item.CoeficienteImpuestosInternosPuntuales = "0";
                        ticketFiscal.items.Add(item);
                    }

                    //DESCUENTO
                    ticketFiscal.DescuentoDescripcion = "DESCUENTO";
                    ticketFiscal.DescuentoMonto = ((decimal)venta.VTA_PORCENTAJEDESCUENTO * 10000).ToString("#");

                    //PAGO
                    ticketFiscal.PagoDescripcionExtra = "";
                    ticketFiscal.PagoDescripcion = venta.FORMA_PAGO.FOR_DESCRIPCION;

                    //CIERRE
                    ticketFiscal.DescripcionReemplazo1 = "";
                    ticketFiscal.DescripcionReemplazo2 = "";
                    ticketFiscal.DescripcionReemplazo3 = "";

                    retornoImpresion = frmImpresoraFiscal.TicketFiscal(ticketFiscal);
                    if (retornoImpresion < 0)
                        return null;

                    //MostrarMensajeInformativo("Se imprimió correctamente el ticket fiscal Nº: " + retornoImpresion);
                }

                #endregion

                #region IMPRIME FACTURA A
                if (TipoComprobante.TIC_DESCRIPCION == "FACTURA A")
                {
                    //control de tipo cliente y comprobante a emitir
                    if (Cliente.TIPO_IVA.TIVA_DESCRIPCION != "RESP. INSCRIPTO")
                    {
                        MostrarMensajeAdvertencia("El Cliente posee Responsabilidad: " + Cliente.TIPO_IVA.TIVA_DESCRIPCION + ".\n No puede imprimir FACTURA A.");
                        return null;
                    }

                    var ticketFactura = new TicketFactura();

                    //CABECERA
                    ticketFactura.NombreComprador1 = Cliente.CLI_NOMBREYAPELLIDO;
                    ticketFactura.NombreComprador2 = "";
                    ticketFactura.DomicilioComprador1 = Cliente.CLI_DIRECCION;
                    ticketFactura.DomicilioComprador2 = Cliente.LOCALIDAD.LOC_DESCRIPCION;
                    ticketFactura.DomicilioComprador3 = "";
                    ticketFactura.TipoDocumentoComprador = "T"; //("T")
                    ticketFactura.NumeroDocumentoComprador = Cliente.CLI_CUIT_CUIL;

                    var responsabilidadIvaComprador = "";
                    switch (Cliente.TIPO_IVA.TIVA_DESCRIPCION)
                    {
                        case "RESP. INSCRIPTO": responsabilidadIvaComprador = "I"; break;
                        case "RESP. NO INSCRIPTO": responsabilidadIvaComprador = "R"; break;
                        case "EXENTO": responsabilidadIvaComprador = "E"; break;
                        case "NO RESPONSABLE": responsabilidadIvaComprador = "N"; break;
                        case Constantes.ConsumidorFinal: responsabilidadIvaComprador = "F"; break;
                        case "RESP. MONOTRIBUTO": responsabilidadIvaComprador = "M"; break;
                        case "NO CATEGORIZADO": responsabilidadIvaComprador = "S"; break;

                        default:
                            break;
                    }

                    ticketFactura.ResponsabilidadIvaComprador = "I"; //("I")
                    ticketFactura.LineaRemito1 = "";
                    ticketFactura.LineaRemito2 = "";
                    ticketFactura.Responsable = "";

                    ticketFactura.items = new List<TicketFacturaItem>();
                    foreach (LINEA_VENTA LineaEnGrilla in ImprimirLineasEnGrilla)
                    {
                        var item = new TicketFacturaItem();
                        item.DescripcionExtra1 = (LineaEnGrilla.LIN_ESTADOPROMO == true) ? "Articulo en PROMOCION" : "";
                        item.DescripcionExtra2 = "";
                        item.DescripcionExtra3 = "";
                        item.DescripcionExtra4 = "";
                        item.DescripcionItem = (LineaEnGrilla.LIN_DESCRESUMIDA.Length > 27) ? LineaEnGrilla.LIN_DESCRESUMIDA.Substring(0, 27) : LineaEnGrilla.LIN_DESCRESUMIDA.ToString();
                        item.Cantidad = (LineaEnGrilla.LIN_CANTIDAD * 10000).ToString();
                        item.PrecioUnitario = (LineaEnGrilla.LIN_PRECIOUNIDAD * 10000).ToString("#");
                        item.TasaIva = (LineaEnGrilla.LIN_TIVA_PORCENTAJE * 100).ToString("#");
                        item.ImpuestosInternosFijos = "0";
                        item.CoeficienteImpuestosInternosPuntuales = "0";

                        ticketFactura.items.Add(item);
                    }

                    //DESCUENTO
                    ticketFactura.DescuentoDescripcion = "DESCUENTO";
                    ticketFactura.DescuentoMonto = ((decimal)venta.VTA_PORCENTAJEDESCUENTO * 10000).ToString("#");

                    //PAGO
                    ticketFactura.PagoDescripcionExtra = "";
                    ticketFactura.PagoDescripcion = venta.FORMA_PAGO.FOR_DESCRIPCION;

                    //CIERRE
                    ticketFactura.DescripcionReemplazo1 = "";
                    ticketFactura.DescripcionReemplazo2 = "";
                    ticketFactura.DescripcionReemplazo3 = "";

                    retornoImpresion = frmImpresoraFiscal.TicketFactura(ticketFactura);
                    if (retornoImpresion < 0)
                        return null;

                    MostrarMensajeInformativo("Se imprimió correctamente el ticket fiscal Nº: " + retornoImpresion);
                }

                #endregion

                #region IMPRIME FACTURA B
                if (TipoComprobante.TIC_DESCRIPCION == "FACTURA B")
                {
                    //control de tipo cliente y comprobante a emitir
                    if (Cliente.TIPO_IVA.TIVA_DESCRIPCION == "RESP. INSCRIPTO")
                    {
                        MostrarMensajeAdvertencia("El Cliente posee Responsabilidad: " + Cliente.TIPO_IVA.TIVA_DESCRIPCION + ".\n No puede imprimir FACTURA B.");
                        return null;
                    }

                    var ticketFactura = new TicketFactura();

                    //CABECERA
                    ticketFactura.NombreComprador1 = Cliente.CLI_NOMBREYAPELLIDO;
                    ticketFactura.NombreComprador2 = "";
                    ticketFactura.DomicilioComprador1 = Cliente.CLI_DIRECCION;
                    ticketFactura.DomicilioComprador2 = Cliente.LOCALIDAD.LOC_DESCRIPCION;
                    ticketFactura.DomicilioComprador3 = "";
                    ticketFactura.TipoDocumentoComprador = "D"; //("D")
                    ticketFactura.NumeroDocumentoComprador = Cliente.CLI_CUIT_CUIL;

                    var responsabilidadIvaComprador = "";
                    switch (Cliente.TIPO_IVA.TIVA_DESCRIPCION)
                    {
                        case "RESP. INSCRIPTO": responsabilidadIvaComprador = "I"; break;
                        case "RESP. NO INSCRIPTO": responsabilidadIvaComprador = "R"; break;
                        case "EXENTO": responsabilidadIvaComprador = "E"; break;
                        case "NO RESPONSABLE": responsabilidadIvaComprador = "N"; break;
                        case Constantes.ConsumidorFinal: responsabilidadIvaComprador = "F"; break;
                        case "RESP. MONOTRIBUTO": responsabilidadIvaComprador = "M"; break;
                        case "NO CATEGORIZADO": responsabilidadIvaComprador = "S"; break;

                        default:
                            break;
                    }

                    ticketFactura.ResponsabilidadIvaComprador = "F"; //("F")
                    ticketFactura.LineaRemito1 = "";
                    ticketFactura.LineaRemito2 = "";
                    ticketFactura.Responsable = "";

                    ticketFactura.items = new List<TicketFacturaItem>();
                    foreach (LINEA_VENTA LineaEnGrilla in ImprimirLineasEnGrilla)
                    {
                        var item = new TicketFacturaItem();
                        item.DescripcionExtra1 = (LineaEnGrilla.LIN_ESTADOPROMO == true) ? "Articulo en PROMOCION" : "";
                        item.DescripcionExtra2 = "";
                        item.DescripcionExtra3 = "";
                        item.DescripcionExtra4 = "";
                        item.DescripcionItem = (LineaEnGrilla.LIN_DESCRESUMIDA.Length > 27) ? LineaEnGrilla.LIN_DESCRESUMIDA.Substring(0, 27) : LineaEnGrilla.LIN_DESCRESUMIDA.ToString();
                        item.Cantidad = (LineaEnGrilla.LIN_CANTIDAD * 10000).ToString("#");
                        item.PrecioUnitario = (LineaEnGrilla.LIN_PRECIOUNIDAD * 10000).ToString("#");
                        item.TasaIva = (LineaEnGrilla.LIN_TIVA_PORCENTAJE * 100).ToString("#");
                        item.ImpuestosInternosFijos = "0";
                        item.CoeficienteImpuestosInternosPuntuales = "0";

                        ticketFactura.items.Add(item);
                    }

                    //DESCUENTO
                    ticketFactura.DescuentoDescripcion = "DESCUENTO";
                    ticketFactura.DescuentoMonto = ((decimal)venta.VTA_PORCENTAJEDESCUENTO * 10000).ToString("#");

                    //PAGO
                    ticketFactura.PagoDescripcionExtra = "";
                    ticketFactura.PagoDescripcion = venta.FORMA_PAGO.FOR_DESCRIPCION;

                    //CIERRE
                    ticketFactura.DescripcionReemplazo1 = "";
                    ticketFactura.DescripcionReemplazo2 = "";
                    ticketFactura.DescripcionReemplazo3 = "";

                    retornoImpresion = frmImpresoraFiscal.TicketFactura(ticketFactura);
                    if (retornoImpresion < 0)
                        return null;

                    //MostrarMensajeInformativo("Se imprimió correctamente el ticket fiscal Nº: " + retornoImpresion);
                }

                #endregion

                return retornoImpresion;
            }
        }
        private void CreaMovimientoCaja(VENTA venta, decimal valor, string descripcion, string tipoMovimiento)
        {
            var eMOVIMIENTO_CAJA = new MOVIMIENTO_CAJA();
            eMOVIMIENTO_CAJA.MOVC_FECHA = DateTime.Now;
            eMOVIMIENTO_CAJA.MOVC_VALOR = valor;
            eMOVIMIENTO_CAJA.TIC_ID = TipoComprobante.TIC_ID;
            eMOVIMIENTO_CAJA.TMOV_ID = (cTIPO_MOVIMIENTO_CAJA.ObtenerPorDescripcion(tipoMovimiento)).TMOV_ID;
            eMOVIMIENTO_CAJA.TIPM_NUMERO = TipoComprobante.TIC_ULTIMONUMERO;
            eMOVIMIENTO_CAJA.TIPO_MOVIMIENTO = null;
            eMOVIMIENTO_CAJA.MOVC_DESCRIPCION = descripcion;
            eMOVIMIENTO_CAJA.VTA_ID = venta.VTA_ID;
            eMOVIMIENTO_CAJA.CAJ_ID = CajaPerteneciente.CAJ_ID;

            cMOVIMIENTO_CAJA.Alta(eMOVIMIENTO_CAJA);
        }
 /// <summary>
 /// Crear un nuevo objeto VENTA.
 /// </summary>
 /// <param name="vTA_ID">Valor inicial de la propiedad VTA_ID.</param>
 /// <param name="fOR_ID">Valor inicial de la propiedad FOR_ID.</param>
 /// <param name="cAJ_ID">Valor inicial de la propiedad CAJ_ID.</param>
 public static VENTA CreateVENTA(global::System.Int32 vTA_ID, global::System.Int32 fOR_ID, global::System.Int32 cAJ_ID)
 {
     VENTA vENTA = new VENTA();
     vENTA.VTA_ID = vTA_ID;
     vENTA.FOR_ID = fOR_ID;
     vENTA.CAJ_ID = cAJ_ID;
     return vENTA;
 }
 /// <summary>
 /// Método desusado para agregar un nuevo objeto al EntitySet VENTA. Considere la posibilidad de usar el método .Add de la propiedad ObjectSet&lt;T&gt; asociada.
 /// </summary>
 public void AddToVENTA(VENTA vENTA)
 {
     base.AddObject("VENTA", vENTA);
 }
        private bool CancelaVenta()
        {
            if (dgvGrilla.RowCount != 0)
            {
                var rta = MostrarMensajePreguntaSI_NO(string.Format("Desea Cancelar la Venta?", ""));
                if (!rta)
                {
                    return false;
                }

                if (eParametro.PAR_AUTORIZA_VTA == true)
                {
                    frmAUTORIZA frm = new frmAUTORIZA();
                    DialogResult dr = frm.ShowDialog();
                    if (dr != DialogResult.OK)
                    {
                        MostrarMensajeAdvertencia(Mensajes.AutorizacionFallo);
                        return false;
                    }
                }

                using (TransactionScope TRANSACCION = new TransactionScope())
                {
                    //guarda la venta cancelada
                    VENTA NuevaVta = new VENTA();
                    NuevaVta.VTA_FECHA = DateTime.Now;
                    NuevaVta.VTA_COLOR = null;
                    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 = true;
                    NuevaVta.FOR_ID = FormaPago.FOR_ID;
                    NuevaVta.CAJ_ID = CajaPerteneciente.CAJ_ID;
                    //NuevaVta.COM_ID = null;//TODO: ver si esta bien 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)
                    {
                        //quito las entidades
                        LineaEnGrilla.PRODUCTO = null;
                        LineaEnGrilla.CATEGORIA_PRODUCTO = null;
                        LineaEnGrilla.ENVASE = null;

                        LineaEnGrilla.VTA_ID = NuevaVta.VTA_ID;
                        cLINEA_VENTA.Alta(LineaEnGrilla);
                    }

                    //guarda la cancelacion de la venta
                    VENTA_CANCELADA VtaCancelada = new VENTA_CANCELADA();
                    VtaCancelada.VTAC_FECHA = DateTime.Now;
                    VtaCancelada.VTAC_TIPOCANCELADA = "VENTA";
                    VtaCancelada.CAJ_ID = CajaPerteneciente.CAJ_ID;
                    VtaCancelada.PROD_ID = null;
                    VtaCancelada.CAT_ID = null;
                    VtaCancelada.ENV_ID = null;
                    VtaCancelada.VTA_ID = NuevaVta.VTA_ID;

                    if (EmpleadoAutoriza_Id != 0)
                        VtaCancelada.EMP_AUTORIZA = EmpleadoAutoriza_Id;

                    cVENTAS.AltaVentaCancelada(VtaCancelada);

                    TRANSACCION.Complete();
                }

            }
            Nueva_Vta();
            return true;
        }
        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;
        }
Exemple #15
0
 //public void BajaLogica(VENTA entidad)
 //{
 //    entidad.CLI_ESTADO = false;
 //    mVENTAS.Modificacion();
 //}
 public void BajaFisica(VENTA entidad)
 {
     mVENTAS.Baja(entidad);
 }
        private void LlenarLineaEnGrilla()
        {
            if (LineasEnGrilla == null)
                LineasEnGrilla = new List<DETALLE_DEVOLUCION>();

            VENTA vtaTicket = null;
            if (cmbTipoComprobante.Text == Constantes.Ticket)
                vtaTicket = cVENTAS.ObtenerPorTicket(Convert.ToInt32(txtNumero.Text));

            if (cmbTipoComprobante.Text == Constantes.TicketFactura)
                vtaTicket = cVENTAS.ObtenerPorTicketFactura(Convert.ToInt32(txtNumero.Text));

            if (cmbTipoComprobante.Text == Constantes.ValeEnvase)
                vtaTicket = cVENTAS.ObtenerPorValeEnvase(Convert.ToInt32(txtNumero.Text));

            if (vtaTicket == null)
            {
                MostrarMensajeAdvertencia("No se encontro ninguna venta con ese numero ingresado.");
                Nuevo_Devolucion();
                return;
            }
            else
            {
                eVta = vtaTicket;
                if (vtaTicket.CLIENTE == null)
                    lblCliente.Text = Constantes.ConsumidorFinal;
                else
                    lblCliente.Text = vtaTicket.CLIENTE.CLI_NOMBREYAPELLIDO;

                //verifico que la venta no tenga alguna otra devolucion
                var devVenta = cDEVOLUCION.ObtenerPorVta(vtaTicket.VTA_ID);
                //si no tiene, cargo la grilla con la venta, poniendo en 0 las cantidades a devolver.
                if (devVenta == null)
                {
                    modo = "A";
                    AgregarLineasDesdeVenta(vtaTicket);
                }

                else
                {
                    modo = "M";
                    eDEVOLUCION = devVenta;
                    //si ya tiene devolucion cargo la devolucion
                    MostrarMensajeAdvertencia("La venta buscada ya tiene ingresada una devolución, se cargará la misma.");
                    var LineasEnGrillaTemporal = new List<DETALLE_DEVOLUCION>();
                    foreach (DETALLE_DEVOLUCION detalle in eDEVOLUCION.DETALLES_DEVOLUCION)
                    {
                        LineasEnGrillaTemporal.Add(detalle);
                    }

                    LineasEnGrilla = LineasEnGrillaTemporal;
                }
            }

            if (dgvGrilla.Rows.Count > 0)
            {
                dgvGrilla.CurrentCell = dgvGrilla.Rows[dgvGrilla.Rows.Count - 1].Cells[0];
            }

            LlenaLabelTotales();
        }
Exemple #17
0
 public void Modificacion(VENTA entidad)
 {
     mVENTAS.Modificacion(entidad);
 }
        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);
            }
        }