Exemple #1
0
        public static void Completar9500(Cotizacion9500 o9500, decimal mSobrante, bool bDevolverEfectivo)
        {
            // Se cancela la venta del anticipo
            var oVentaAnt = Datos.GetEntity <Venta>(q => q.VentaID == o9500.AnticipoVentaID && q.VentaEstatusID != Cat.VentasEstatus.Cancelada &&
                                                    q.VentaEstatusID != Cat.VentasEstatus.CanceladaSinPago && q.Estatus);

            if (oVentaAnt != null)
            {
                oVentaAnt.VentaEstatusID = Cat.VentasEstatus.Cancelada;
                Datos.Guardar <Venta>(oVentaAnt);
                // 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 (Datos.Exists <VentaPago>(q => q.VentaID == o9500.AnticipoVentaID && q.Estatus))
                {
                    VentasProc.GenerarDevolucionDeEfectivo(o9500.AnticipoVentaID.Valor(), o9500.Anticipo - (mSobrante > 0 ? mSobrante : 0));
                }
            }

            // Si hubo un sobrante, se genera nota de crédito o se devuelve efectivo
            if (mSobrante > 0)
            {
                if (bDevolverEfectivo)
                {
                    VentasProc.GenerarDevolucionDeEfectivo(oVentaAnt.VentaID, mSobrante);
                }
                else
                {
                    VentasProc.GenerarNotaDeCredito(o9500.ClienteID, mSobrante, "", Cat.OrigenesNotaDeCredito.Anticipo9500, oVentaAnt.VentaID);
                }
            }

            // Se modifica el Estatus del 9500
            o9500.EstatusGenericoID = Cat.EstatusGenericos.Completada;
            Datos.Guardar <Cotizacion9500>(o9500);
        }
Exemple #2
0
        public static void Cancelar9500(int i9500ID, string sMotivo, int iUsuarioID)
        {
            var o9500        = Datos.GetEntity <Cotizacion9500>(q => q.Cotizacion9500ID == i9500ID && q.Estatus);
            var o9500Detalle = Datos.GetListOf <Cotizacion9500Detalle>(q => q.Cotizacion9500ID == i9500ID && q.Estatus);

            // Se verifica si se cobró el anticipo, para cancelarlo
            if (o9500.Anticipo > 0)
            {
                var oAnticipo = Datos.GetEntity <Venta>(c => c.VentaID == o9500.AnticipoVentaID && c.Estatus);
                if (oAnticipo.VentaEstatusID == Cat.VentasEstatus.Cobrada || oAnticipo.VentaEstatusID == Cat.VentasEstatus.Completada)
                {
                    // Si se pagó, se genera una devolución
                    var oVentaV = Datos.GetEntity <VentasView>(c => c.VentaID == o9500.AnticipoVentaID);
                    if (oVentaV.Pagado > 0)
                    {
                        VentasProc.GenerarDevolucionDeEfectivo(oVentaV.VentaID, oVentaV.Pagado);
                    }

                    // Se cancela la venta del anticipo
                    oAnticipo.VentaEstatusID = (oVentaV.Pagado > 0 ? Cat.VentasEstatus.Cancelada : Cat.VentasEstatus.CanceladaSinPago);
                    Datos.Guardar <Venta>(oAnticipo);
                }
            }

            // Se borran las partes del 9500, si no han sido usadas
            foreach (var oParte in o9500Detalle)
            {
                // Se valida que la parte no haya sido usada en ventas
                if (Datos.Exists <VentaDetalle>(q => q.ParteID == oParte.ParteID))
                {
                    continue;
                }
                // Se valida que la parte no haya sido usada en almacén
                if (Datos.Exists <MovimientoInventarioDetalle>(q => q.ParteID == oParte.ParteID))
                {
                    continue;
                }
                // Se borra -> Deshabilitado hasta tener las validaciones del Almacén
                Guardar.EliminarParte(oParte.ParteID);
            }

            // Se verifica si hay autorizaciones, para borrarlas
            var oAuts = Datos.GetListOf <Autorizacion>(c => (c.AutorizacionProcesoID == Cat.AutorizacionesProcesos.c9500PrecioFueraDeRango ||
                                                             c.AutorizacionProcesoID == Cat.AutorizacionesProcesos.c9500SinAnticipo) && c.Tabla == Cat.Tablas.Tabla9500 && c.TablaRegistroID == i9500ID && c.Estatus);

            foreach (var oReg in oAuts)
            {
                oReg.Estatus = true;
                Datos.Guardar <Autorizacion>(oReg);
            }

            // Se cancela el 9500
            o9500.EstatusGenericoID = Cat.EstatusGenericos.CanceladoAntesDeVender;
            o9500.BajaUsuarioID     = iUsuarioID;
            o9500.BajaMotivo        = sMotivo;
            Datos.Guardar <Cotizacion9500>(o9500);
        }