Esempio n. 1
0
        private void Cancelar9500(int i9500ID)
        {
            var o9500 = Datos.GetEntity <Cotizacion9500>(q => q.Cotizacion9500ID == i9500ID && q.Estatus);

            // Se valida que ya se haya cobrado la venta del anticipo
            var oVenta = Datos.GetEntity <Venta>(q => q.VentaID == o9500.AnticipoVentaID && q.Estatus);

            if (oVenta.VentaEstatusID == Cat.VentasEstatus.Realizada)
            {
                UtilLocal.MensajeAdvertencia("El 9500 seleccionado no ha sido cobrado. Para cancelarlo, cancela la Venta del anticipo desde Ventas por Cobrar.");
                return;
            }

            if (UtilLocal.MensajePregunta("¿Estás seguro que deseas cancelar el 9500 seleccionado?") == DialogResult.Yes)
            {
                var oMotivo = UtilLocal.ObtenerValor("¿Cuál es el motivo de la baja?", "", MensajeObtenerValor.Tipo.TextoLargo);
                if (oMotivo == null)
                {
                    return;
                }
                var oResU = UtilLocal.ValidarObtenerUsuario();
                if (oResU.Error)
                {
                    return;
                }

                Cargando.Mostrar();
                // Se cancela el 9500
                VentasProc.Cancelar9500(i9500ID, Util.Cadena(oMotivo), oResU.Respuesta.UsuarioID);
                Cargando.Cerrar();
                this.CargarLista9500();
            }
        }
Esempio n. 2
0
        private void dgvConceptos_KeyDown(object sender, KeyEventArgs e)
        {
            if (this.dgvConceptos.CurrentRow == null)
            {
                return;
            }

            if (e.KeyCode == Keys.Delete)
            {
                if (UtilLocal.MensajePregunta("¿Estás seguro que deseas eliminar el concepto seleccionado?") == DialogResult.Yes)
                {
                    if (!Util.Logico(this.dgvConceptos.CurrentRow.Cells["EsNuevo"].Value))
                    {
                        if (Util.Cadena(this.dgvConceptos.CurrentRow.Cells["Tipo"].Value).ToLower() == "ingreso")
                        {
                            this.IngresosBorrados.Add(Util.Entero(this.dgvConceptos.CurrentRow.Cells["ID"].Value));
                        }
                        else
                        {
                            this.EgresosBorrados.Add(Util.Entero(this.dgvConceptos.CurrentRow.Cells["ID"].Value));
                        }
                    }
                    this.dgvConceptos.Rows.Remove(this.dgvConceptos.CurrentRow);
                }
            }
        }
Esempio n. 3
0
 private void dgvAutorizaciones_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
 {
     if (this.dgvAutorizaciones.CurrentRow == null)
     {
         return;
     }
     if (UtilLocal.MensajePregunta("¿Estás seguro que deseas autorizar la tarea seleccionada?") == DialogResult.Yes)
     {
         int iAutorizacionID = Util.Entero(this.dgvAutorizaciones.CurrentRow.Cells["AutorizacionID"].Value);
         this.AutorizarAutorizacion(iAutorizacionID);
         this.AplicarFiltro();
     }
 }
Esempio n. 4
0
        protected override void btnEliminar_Click(object sender, EventArgs e)
        {
            int iRegistroID = Util.Entero(this.dgvDatos.CurrentRow.Cells["ContaConsumibleID"].Value);
            var oRegistro   = Datos.GetEntity <ContaConsumible>(c => c.ContaConsumibleID == iRegistroID);

            string sPregunta = string.Format("¿Estás seguro que deseas eliminar el {0}: \"{1}\"?", "Consumible", oRegistro.Consumible);

            if (UtilLocal.MensajePregunta(sPregunta) != DialogResult.Yes)
            {
                return;
            }

            Datos.Eliminar <ContaConsumible>(oRegistro);
            this.ActualizarDatos();
        }
Esempio n. 5
0
        protected override void btnEliminar_Click(object sender, EventArgs e)
        {
            int iBancoID = Util.Entero(this.dgvDatos.CurrentRow.Cells["BancoID"].Value);
            var oBanco   = Datos.GetEntity <Banco>(q => q.BancoID == iBancoID && q.Estatus);

            string sPregunta = string.Format("¿Estás seguro que deseas eliminar el {0}: \"{1}\"?", "Banco", oBanco.NombreBanco);

            if (UtilLocal.MensajePregunta(sPregunta) != DialogResult.Yes)
            {
                return;
            }

            Datos.Eliminar <Banco>(oBanco, true);
            this.ActualizarDatos();
        }
Esempio n. 6
0
        private void dgvNotasDeCredito_KeyDown(object sender, KeyEventArgs e)
        {
            if (this.dgvNotasDeCredito.CurrentRow == null)
            {
                return;
            }

            if (e.KeyCode == Keys.Delete)
            {
                // Se verifica la nota de crédito seleccionada
                int iNotaDeCreditoID = Util.Entero(this.dgvNotasDeCredito.CurrentRow.Cells["ncNotaDeCreditoID"].Value);
                var oNota            = Datos.GetEntity <NotaDeCredito>(q => q.NotaDeCreditoID == iNotaDeCreditoID && q.Estatus);
                if (oNota.Valida == false)
                {
                    UtilLocal.MensajeAdvertencia("La nota de crédito seleccionada ya no es válida. No se puede continuar.");
                    return;
                }

                if (UtilLocal.MensajePregunta("¿Estás seguro que deseas dar de baja la nota de crédito seleccionada?") == DialogResult.Yes)
                {
                    // Se solicita el motivo
                    var oMotivo = UtilLocal.ObtenerValor("Indica el motivo de la baja", "", MensajeObtenerValor.Tipo.TextoLargo);
                    if (oMotivo != null)
                    {
                        // Se solicita la validación de usuario
                        var ResU = UtilLocal.ValidarObtenerUsuario("Ventas.NotasDeCredito.Baja");
                        if (ResU.Exito)
                        {
                            oNota.Valida     = false;
                            oNota.MotivoBaja = Util.Cadena(oMotivo);
                            Datos.Guardar <NotaDeCredito>(oNota);
                            this.NcAplicarFiltro();
                        }
                        else
                        {
                            if (ResU.Respuesta != null)
                            {
                                UtilLocal.MensajeAdvertencia("No tienes permisos para realizar la operación solicitada.");
                            }
                        }
                    }
                }
            }
        }
Esempio n. 7
0
        private void btnGuardar_Click(object sender, EventArgs e)
        {
            if (UtilLocal.MensajePregunta("¿Estás seguro que deseas autorizar los registros seleccionados?") == DialogResult.Yes)
            {
                Cargando.Mostrar();

                foreach (DataGridViewRow oFila in this.dgvAutorizaciones.Rows)
                {
                    if (Util.Logico(oFila.Cells["Autorizado"].Value))
                    {
                        int iAutorizacionID = Util.Entero(oFila.Cells["AutorizacionID"].Value);
                        this.AutorizarAutorizacion(iAutorizacionID);
                    }
                }
                this.AplicarFiltro();

                Cargando.Cerrar();
            }
        }
Esempio n. 8
0
        private void BorrarVenta(int iVentaID)
        {
            // Para ver si la venta es un anticipo de 9500
            var o9500Ant = Datos.GetEntity <Cotizacion9500>(q => q.AnticipoVentaID == iVentaID && q.EstatusGenericoID == Cat.EstatusGenericos.Pendiente &&
                                                            q.Estatus);
            // Para ver si la venta es de un 9500
            Cotizacion9500 o9500 = null;

            if (o9500Ant == null)
            {
                o9500 = Datos.GetEntity <Cotizacion9500>(q => q.VentaID == iVentaID && q.Estatus);
            }

            string sPregunta = "¿Estás seguro que deseas eliminar la venta seleccionada?";

            if (o9500Ant != null)
            {
                sPregunta = "La venta seleccionada pertenece a un anticipo de 9500. ¿Estás seguro que deseas eliminarla?";
            }
            else if (o9500 != null)
            {
                sPregunta = "La venta seleccionada pertenece a un 9500. ¿Estás seguro que deseas eliminarla?";
            }

            if (UtilLocal.MensajePregunta(sPregunta) == DialogResult.Yes)
            {
                // Si es un anticipo de 9500, éste se cancela y se borran las partes, si no han sido usadas
                if (o9500Ant != null)
                {
                    VentasProc.Cancelar9500(o9500Ant.Cotizacion9500ID, "POR BORRAR VENTA SIN COBRAR", GlobalClass.UsuarioGlobal.UsuarioID);
                }
                // Si es un 9500, éste se regresa a los 9500 pendientes
                else if (o9500 != null)
                {
                    VentasProc.Regresar9500DeCompletar(o9500);
                }

                // Se elimina la venta
                VentasProc.EliminarVenta(iVentaID);
                this.ActualizarDatos();
            }
        }
Esempio n. 9
0
        public static void EnviarReporteASalida(string sParametro, Report oReporte, bool bUsarPreparado)
        {
            // Se abre el xml correspondiente al reporte
            var oXmlRep = new XmlDocument();

            oXmlRep.Load(oReporte.FileName);

            // Se obtiene el tipo de salida, primero del xml del reporte, si no, de la base de datos
            string sTipoDeSalida = "";

            if (oXmlRep.DocumentElement.Attributes["Cr_Salida"] == null)
            {
                sTipoDeSalida = Config.Valor(sParametro);
            }
            else
            {
                sTipoDeSalida = oXmlRep.DocumentElement.Attributes["Cr_Salida"].Value;
            }

            switch (sTipoDeSalida.ToLower())
            {
            case "d":
                oReporte.Design();
                break;

            case "p":
                if (bUsarPreparado)
                {
                    oReporte.ShowPrepared();
                }
                else
                {
                    oReporte.Show();
                }
                break;

            case "i":
                bool bDialogo = (oReporte.PrintSettings.Printer == "");
                oReporte.PrintSettings.ShowDialog = bDialogo;

                // Se intenta mandar a imprimir
                try
                {
                    if (bUsarPreparado)
                    {
                        oReporte.PrintPrepared();
                    }
                    else
                    {
                        oReporte.Print();
                    }

                    if (bDialogo)
                    {
                        if (UtilLocal.MensajePregunta("¿Deseas guardar los datos de impresión especificados como predeterminados para este reporte?") == DialogResult.Yes)
                        {
                            oReporte.PrintSettings.SavePrinterWithReport = true;
                            oReporte.Save(oReporte.FileName);
                        }
                    }
                }
                catch (Exception e)
                {
                    UtilLocal.MensajeError(e.Message);
                }

                break;
            }
        }
Esempio n. 10
0
        public override bool Ejecutar()
        {
            // Se valida la opción
            if (!this.ctlFacturar.Validar())
            {
                return(false);
            }

            // Se pregunta si se debe facturar al mismo cliente de las ventas o a otro
            int iAFClienteID = this.Cliente.ClienteID;

            if (UtilLocal.MensajePregunta("¿Deseas hacer la factura a nombre del cliente seleccionado?") == DialogResult.No)
            {
                iAFClienteID = 0;
                var frmValor = new MensajeObtenerValor("Selecciona el cliente para facturar:", "", MensajeObtenerValor.Tipo.Combo);
                frmValor.CargarCombo("ClienteID", "Nombre", Datos.GetListOf <Cliente>(q => q.ClienteID != Cat.Clientes.Mostrador && q.Estatus));
                if (frmValor.ShowDialog(Principal.Instance) == DialogResult.OK)
                {
                    iAFClienteID = Util.Entero(frmValor.Valor);
                }
                frmValor.Dispose();
            }
            if (iAFClienteID == 0)
            {
                return(false);
            }

            // Se solicita el usuario que realiza el proceso
            int iUsuarioID = 0;
            var Res        = UtilLocal.ValidarObtenerUsuario("Ventas.FacturarTickets.Agregar");

            if (Res.Error)
            {
                return(false);
            }
            iUsuarioID = Res.Respuesta.UsuarioID;

            // Se muestra la ventana de "Cargando.."
            Cargando.Mostrar();

            //
            DateTime dAhora = DateTime.Now;

            // Se obtienen los datos de los productos, por si se cambió la descripción
            List <ProductoVenta> oPartes = null;

            if (this.ctlFacturar.MostrarTodasLasPartes)
            {
                oPartes = this.ctlDetalle.ObtenerListaVenta();
            }

            // Se procede a generar la factura
            var oVentasAF     = this.ctlFacturar.GenerarListaDeVentas();
            var oFormasDePago = this.ctlFacturar.FormasDePagoLibre;
            var ResFe         = VentasLoc.GenerarFacturaElectronica(oVentasAF, iAFClienteID, oPartes, oFormasDePago, this.ctlFacturar.Observacion, null);

            if (ResFe.Error)
            {
                UtilLocal.MensajeAdvertencia(ResFe.Mensaje);
                return(false);
            }

            // Se guarda el dato de que fue una factura de ventas

            var oFactura = Datos.GetEntity <VentaFactura>(q => q.VentaFacturaID == ResFe.Respuesta && q.Estatus);

            oFactura.Convertida       = true;
            oFactura.RealizoUsuarioID = iUsuarioID;
            Datos.Guardar <VentaFactura>(oFactura);

            // Se manda a afectar contabilidad (AfeConta)
            foreach (int iVentaID in oVentasAF)
            {
                var oVentaV = Datos.GetEntity <VentasView>(c => c.VentaID == iVentaID);
                if (oVentaV.ACredito)
                {
                    ContaProc.CrearPolizaAfectacion(Cat.ContaAfectaciones.VentaCredito, iVentaID, (oFactura.Serie + oFactura.Folio), oVentaV.Cliente);
                    // Se verifica si el ticket ya está pagado, para hacer la póliza correspondiente a dicho pago
                    if (oVentaV.Pagado > 0)
                    {
                        var oPagos = Datos.GetListOf <VentaPago>(c => c.VentaID == iVentaID && c.Estatus);
                        foreach (var oReg in oPagos)
                        {
                            ContaProc.CrearPolizaAfectacion(Cat.ContaAfectaciones.PagoVentaCredito, oReg.VentaPagoID
                                                            , ((oFactura.Serie + oFactura.Folio) + " / " + UtilDatos.VentaPagoFormasDePago(oReg.VentaPagoID))
                                                            , oVentaV.Cliente, oReg.SucursalID);
                        }
                    }

                    // Se borra la póliza temporal creada por ser ticket a crédito
                    ContaProc.BorrarPolizaTemporalTicketCredito(iVentaID);
                }
                else
                {
                    ContaProc.CrearPolizaAfectacion(Cat.ContaAfectaciones.VentaContadoFacturaConvertida, iVentaID
                                                    , (oFactura.Serie + oFactura.Folio), oVentaV.Cliente, oVentaV.SucursalID);
                }
            }

            // Se guarda el dato de pendiente por descontar en la factura global, si aplica
            // Se guardan datos cuando se están facturando tickets abonados en otras sucursales
            foreach (int iVentaID in oVentasAF)
            {
                // Se obtienen los abonos de otras sucursales
                var oAbonos = Datos.GetListOf <VentasPagosView>(c => c.VentaID == iVentaID && c.SucursalID != GlobalClass.SucursalID)
                              .GroupBy(c => new { c.VentaID, c.SucursalID }).Select(c => new { c.Key.VentaID, c.Key.SucursalID, Abonado = c.Sum(s => s.Importe) });
                if (oAbonos != null && oAbonos.Count() > 0)
                {
                    foreach (var oReg in oAbonos)
                    {
                        var oPendiente = new FacturaGlobalPendientePorDescontar()
                        {
                            VentaID    = oReg.VentaID,
                            Fecha      = dAhora,
                            SucursalID = oReg.SucursalID,
                            Importe    = oReg.Abonado
                        };
                        Datos.Guardar <FacturaGlobalPendientePorDescontar>(oPendiente);
                    }
                }
            }

            // Se cierra la ventana de "Cargando.."
            Cargando.Cerrar();

            // Se muestra una notifiación con el resultado
            UtilLocal.MostrarNotificacion("Procedimiento ejecutado correctamente.");

            // Se limpia después de haberse guardado
            this.Limpiar();

            return(true);
        }
Esempio n. 11
0
        public override bool Ejecutar()
        {
            // Se valida que el importe a pagar sea mayor que cero
            if (this.ctlCobranza.Total <= 0)
            {
                UtilLocal.MensajeAdvertencia("No hay ningún importe a pagar.");
                return(false);
            }

            // Se valida el cobro
            if (!this.ctlCobro.Validar())
            {
                return(false);
            }

            // Se valida que el pago sea en la misma sucursal que el primer abono, si hubiera
            var    oVentasACobrar = this.ctlCobranza.ObtenerVentasMarcadas();
            string sVentasOt      = "";

            foreach (var oReg in oVentasACobrar)
            {
                if (Datos.Exists <VentaPago>(c => c.VentaID == oReg.VentaID && c.Estatus && c.SucursalID != GlobalClass.SucursalID))
                {
                    sVentasOt += (", " + oReg.Folio);
                }
            }
            if (sVentasOt != "" && oVentasACobrar[0].VentaID != 270157)  // Modificaciòn temporal para no evaluar esa venta - 2015-08-24
            {
                UtilLocal.MensajeAdvertencia("Las siguientes ventas ya fueron abonadas en otra sucursal, por lo tanto aquí no se pueden cobrar.\n\n"
                                             + sVentasOt.Substring(2));
                return(false);
            }

            // Si se quiere pagar con Vales, se valida que sólo sea una venta
            var oFormasDePago = this.ctlCobro.GenerarPagoDetalle();

            if (oFormasDePago.Any(c => c.TipoFormaPagoID == Cat.FormasDePago.Vale) && oVentasACobrar.Count > 1)
            {
                UtilLocal.MensajeAdvertencia("En selecciones múltiples no se puede usar vales. Es necesario seleccionar sólo una venta.");
                return(false);
            }

            // Confirmación
            if (UtilLocal.MensajePregunta("¿Estás seguro que deseas realizar el abono indicado?") != DialogResult.Yes)
            {
                return(false);
            }

            // Se completa el cobro, por si fue pago en efectivo
            if (!this.ctlCobro.CompletarCobro())
            {
                return(false);
            }

            // Se solicita la validación de autorización, si aplica
            int iAutorizoID = 0;

            if (this.ctlCobro.AutorizacionDeNotasDeCreditoRequerida)
            {
                var Res = UtilLocal.ValidarObtenerUsuario("Autorizaciones.Ventas.Cobro.NotaDeCreditoOtroCliente", "Autorización");
                iAutorizoID = (Res.Exito ? Res.Respuesta.UsuarioID : 0);
            }

            // Se procede a guardar los datos
            DateTime dAhora = DateTime.Now;

            // Se generan los pagos para las ventas marcadas, hasta donde alcance el importe
            decimal mPago            = this.ctlCobro.Suma;
            var     oVentasAfectadas = new List <VentasACreditoView>();
            var     oPagosDetalleGen = new List <VentaPagoDetalle>();
            var     oIdsPago         = new List <int>();

            foreach (var oVentaACobrar in oVentasACobrar)
            {
                // Si la venta no tiene saldo, se salta
                if (oVentaACobrar.Restante <= 0)
                {
                    continue;
                }

                var oPago = new VentaPago()
                {
                    VentaID = oVentaACobrar.VentaID,
                    Fecha   = dAhora,
                };
                var     oPagoDetalle = new List <VentaPagoDetalle>();
                decimal mPagoForma   = 0;
                oVentaACobrar.Pagado = 0;  // Se hace cero para que sólo sume lo pagado en esta ocasión
                foreach (var oFormaDePago in oFormasDePago)
                {
                    mPagoForma = (oFormaDePago.Importe > oVentaACobrar.Restante ? oVentaACobrar.Restante : oFormaDePago.Importe);
                    if (oFormaDePago.Importe > 0)
                    {
                        oPagoDetalle.Add(new VentaPagoDetalle()
                        {
                            TipoFormaPagoID = oFormaDePago.TipoFormaPagoID,
                            Importe         = mPagoForma,
                            BancoID         = oFormaDePago.BancoID,
                            Folio           = oFormaDePago.Folio,
                            Cuenta          = oFormaDePago.Cuenta,
                            NotaDeCreditoID = oFormaDePago.NotaDeCreditoID
                        });

                        mPago -= mPagoForma;
                        oFormaDePago.Importe   -= mPagoForma;
                        oVentaACobrar.Pagado   += mPagoForma;
                        oVentaACobrar.Restante -= mPagoForma;
                        if (oVentaACobrar.Restante <= 0)
                        {
                            break;
                        }
                    }
                }
                Guardar.VentaPago(oPago, oPagoDetalle);

                // Se agrega la venta actual a las ventas afectadas
                oVentasAfectadas.Add(oVentaACobrar);
                oIdsPago.Add(oPago.VentaPagoID);
                oPagosDetalleGen.AddRange(oPagoDetalle);

                if (mPago <= 0)
                {
                    break;
                }
            }

            // Se manda a generar la póliza contable (AfeConta)
            foreach (int iPagoID in oIdsPago)
            {
                var oPagoV = Datos.GetEntity <VentasPagosView>(c => c.VentaPagoID == iPagoID);
                if (oPagoV.Facturada)
                {
                    ContaProc.CrearPolizaAfectacion(Cat.ContaAfectaciones.PagoVentaCredito, iPagoID
                                                    , (oPagoV.Folio + " / " + UtilDatos.VentaPagoFormasDePago(iPagoID)), oPagoV.Cliente);
                }

                // Si es tiecket a crédito, se hace ajuste de pólizas
                if (!oPagoV.Facturada)
                {
                    ContaProc.BorrarPolizaTemporalTicketCredito(oPagoV.VentaID);
                    var oVentaV = Datos.GetEntity <VentasView>(c => c.VentaID == oPagoV.VentaID);
                    if (oVentaV.VentaEstatusID == Cat.VentasEstatus.Cobrada)
                    {
                        ContaProc.CrearPolizaTemporalTicketCredito(oPagoV.VentaID, (oVentaV.Total - oVentaV.Pagado));
                    }
                }
            }

            // Se guardan la autorizaciones aplicables
            if (this.ctlCobro.AutorizacionDeNotasDeCreditoRequerida)
            {
                // Se agrega una autorización por cada nota de otro cliente
                var oNotasOC = this.ctlCobro.NotasDeCreditoOtrosClientes();
                foreach (var oNotaOC in oNotasOC)
                {
                    VentasProc.GenerarAutorizacion(Cat.AutorizacionesProcesos.NotaDeCreditoOtroClienteUsar, Cat.Tablas.NotaDeCredito, oNotaOC, iAutorizoID);
                }
            }

            // Se guardan los datos del cobro, para reimpresión de tickets
            string sFolioCob = VentasProc.GenerarFolioDeCobranza();
            int    iCuenta   = 0;

            foreach (var oVentaAf in oVentasAfectadas)
            {
                Datos.Guardar <CobranzaTicket>(new CobranzaTicket()
                {
                    Ticket      = sFolioCob,
                    VentaID     = oVentaAf.VentaID,
                    ClienteID   = this.Cliente.ClienteID,
                    Folio       = oVentaAf.Folio,
                    Fecha       = oVentaAf.Fecha,
                    Vencimiento = oVentaAf.Vencimiento,
                    Total       = oVentaAf.Total,
                    Pagado      = oVentaAf.Pagado,
                    Restante    = oVentaAf.Restante,
                    VentaPagoID = oIdsPago[iCuenta++]
                });
            }

            // Se genera el ticket correspondiente
            VentasLoc.GenerarTicketCobranza(sFolioCob);

            // Si se pagó con vale, se verifica si se crearon nuevos vales por importes restantes. Y se mandan a imprimir
            var oValesCreados = VentasProc.ObtenerValesCreados(oPagosDetalleGen);

            foreach (var oReg in oValesCreados)
            {
                VentasLoc.GenerarTicketNotaDeCredito(oReg.NotaDeCreditoID);
            }

            // Se muestra una notifiación con el resultado
            UtilLocal.MostrarNotificacion("Procedimiento completado correctamente.");

            // Se limpia después de haberse guardado
            this.Limpiar();

            return(true);
        }
Esempio n. 12
0
        private void CambioSesion()
        {
            Control oControlAc = Util.ControlAlFrente(this.panelContenedor);

            // Se ocultan todos los controles del formulario principal
            foreach (Control oControl in this.panelContenedor.Controls)
            {
                oControl.Hide();
            }
            this.panelContenedor.Tag = null;

            //
            bool bSesionNueva = false;

            while (true)
            {
                // Se muestra la ventana de inicio de sesion
                bool bInicio = this.MostrarInicioDeSesion();
                if (!bInicio)
                {
                    if (UtilLocal.MensajePregunta("Existe una sesión abierta. Si continúas, el programa se cerrará y la información se perderá. ¿Estás seguro que deseas continuar?")
                        == DialogResult.Yes)
                    {
                        this.Close();
                        return;
                    }
                    else
                    {
                        continue;
                    }
                }
                // Se verifica si es otro usuario
                if (this.oUsuario.UsuarioID != GlobalClass.UsuarioGlobal.UsuarioID)
                {
                    if (UtilLocal.MensajePregunta("Existe una sesión abierta con otro Usuario. Si continúas, la información se perderá. ¿Estás seguro que deseas continuar?")
                        == DialogResult.Yes)
                    {
                        bSesionNueva = true;
                    }
                    else
                    {
                        continue;
                    }
                }
                // Se verifica si se inicia sesión con otra sucursal
                if (this.SucursalID != GlobalClass.SucursalID)
                {
                    if (UtilLocal.MensajePregunta("Existe una sesión abierta con otra Sucursal. Si continúas, la información se perderá. ¿Estás seguro que deseas continuar?")
                        == DialogResult.Yes)
                    {
                        bSesionNueva = true;
                    }
                    else
                    {
                        continue;
                    }
                }
                //
                break;
            }

            // Se inicia o continúa la sesión
            if (bSesionNueva)
            {
                // Se cierran las opciones abiertas
                while (this.panelContenedor.Controls.Count > 0)
                {
                    Control oControl = this.panelContenedor.Controls[0];
                    this.panelContenedor.Controls.Remove(oControl);
                    oControl.Dispose();
                    oControl = null;
                }
                //
                Proc.InicializarSesion(this.SucursalID, this.oUsuario);
            }
            else
            {
                if (oControlAc != null)
                {
                    this.CargarControl(oControlAc.Name);
                }
            }
        }
Esempio n. 13
0
        private bool Completar9500()
        {
            // Se validan las partes
            if (!this.ctlComDetalle.Validar())
            {
                return(false);
            }

            //if (Util.ControlAlFrente(this.pnlCompletar) == this.ctlComDetalle)
            //{
            //}

            // Se verifica que se haya hecho el pago del anticipo
            Cotizacion9500 o9500 = this.ctlPartes.oCotizacion9500;

            if (!Datos.Exists <Venta>(c => c.VentaID == o9500.AnticipoVentaID &&
                                      (c.VentaEstatusID == Cat.VentasEstatus.Completada || c.VentaEstatusID == Cat.VentasEstatus.Cobrada)))
            {
                UtilLocal.MensajeAdvertencia("Al parecer no se ha realizado el pago correspondiente al Anticipo. No se puede continuar.");
                return(false);
            }

            // Se confirma la operación
            if (UtilLocal.MensajePregunta(string.Format("¿Estás seguro que deseas completar el 9500 con el folio {0}?\n\n{1}"
                                                        , this.ctlPartes.oCotizacion9500.Cotizacion9500ID, this.ctlPartes.o9500Sel["lisDescripcion"])) != DialogResult.Yes)
            {
                return(false);
            }

            // Se guardan los datos
            DateTime dAhora = DateTime.Now;

            // Se cancela la venta del anticipo

            /* Ya no. Ahora todo esto se hace al cobrar la venta final
             * oVenta.VentaEstatusID = Cat.VentasEstatus.Cancelada;
             * Datos.Guardar<Venta>(oVenta);
             * // Se genera una devolución de efectivo (si se realizó un pago) de la venta cancelada, pues se generará una nueva venta con el importe total
             * if (oVentaPago != null)
             *  VentasProc.GenerarDevolucionDeEfectivo(o9500.AnticipoVentaID.Valor(), o9500.Anticipo);
             */

            // Se genera la venta correspondiente al 9500
            // var o9500Detalle = General.GetListOf<Cotizacion9500Detalle>(q => q.Estatus && q.Cotizacion9500ID == oCotizacion9500.Cotizacion9500ID);
            var oCliente = Datos.GetEntity <Cliente>(q => q.ClienteID == o9500.ClienteID && q.Estatus);
            var oDetalle = this.ctlComDetalle.ProductosSel();
            var oVenta   = new Venta()
            {
                Fecha                 = dAhora,
                ClienteID             = o9500.ClienteID,
                VentaEstatusID        = Cat.VentasEstatus.Realizada,
                RealizoUsuarioID      = o9500.RealizoUsuarioID,
                ComisionistaClienteID = o9500.ComisionistaClienteID
            };
            var oVentaDetalle = new List <VentaDetalle>();

            foreach (var oParte in oDetalle)
            {
                // Se toma el precio de la tabla "PartePrecio", pues pudo haber sido cambiado por el encargado de Compras
                var     oPartePrecio = Datos.GetEntity <PartePrecio>(q => q.ParteID == oParte.ParteID);
                decimal mPrecio      = UtilDatos.PartePrecioDeVenta(oPartePrecio, oCliente.ListaDePrecios);
                // Se agrega la parte al detalle de la venta
                oVentaDetalle.Add(new VentaDetalle()
                {
                    ParteID           = oParte.ParteID,
                    Costo             = oPartePrecio.Costo.Valor(),
                    CostoConDescuento = (oPartePrecio.CostoConDescuento ?? oPartePrecio.Costo.Valor()),
                    Cantidad          = oParte.Cantidad,
                    PrecioUnitario    = UtilTheos.ObtenerPrecioSinIva(mPrecio, 3),
                    Iva = UtilTheos.ObtenerIvaDePrecio(mPrecio, 3)
                });
            }
            // Se guarda la venta
            Guardar.Venta(oVenta, oVentaDetalle);

            // Se modifica el dato de la venta correspondiente al 9500
            o9500.VentaID           = oVenta.VentaID;
            o9500.EstatusGenericoID = Cat.EstatusGenericos.PorCompletar;
            Datos.Guardar <Cotizacion9500>(o9500);

            // Se restaura
            this.ctlPartes.ComCliente = null;
            this.pnlEnTotales.Controls.Remove(this.pnlCompletar);
            this.pnlCompletar.Dispose();
            this.pnlCompletar = null;
            this.CambiarOpcion(eOpcion.Agregar);
            this.ctlPartes.tab9500.SelectedIndex = 0;

            // Se muestra una notifiación con el resultado
            UtilLocal.MostrarNotificacion("Cotización 9500 guardada correctamente.");

            // Se retorna falso para que no se quite la opción de 9500
            return(false);
        }