Esempio n. 1
0
        public static void RegistrarKardex(ParteKardex oParteKardex)
        {
            oParteKardex.Folio = (oParteKardex.Folio == null ? "" : oParteKardex.Folio);

            // Se verifica si la parte es servicio, para no afectar la existencia nueva
            if (Datos.Exists <Parte>(c => c.ParteID == oParteKardex.ParteID && c.EsServicio.Value && c.Estatus))
            {
                oParteKardex.Cantidad = 0;
            }

            // Se calcula la existencia nueva
            var oParteKardexAnt = Datos.GetListOf <ParteKardex>(c => c.ParteID == oParteKardex.ParteID && c.SucursalID == oParteKardex.SucursalID)
                                  .OrderByDescending(c => c.ParteKardexID).FirstOrDefault();
            decimal mExistencia = (oParteKardexAnt == null ? 0 : oParteKardexAnt.ExistenciaNueva);
            decimal mCantidad   = oParteKardex.Cantidad;

            if (oParteKardex.OperacionID == Cat.OperacionesKardex.Venta || oParteKardex.OperacionID == Cat.OperacionesKardex.DevolucionAProveedor ||
                oParteKardex.OperacionID == Cat.OperacionesKardex.SalidaInventario || oParteKardex.OperacionID == Cat.OperacionesKardex.SalidaTraspaso)
            {
                mCantidad *= -1;
            }
            oParteKardex.ExistenciaNueva = (mExistencia + mCantidad);

            Datos.Guardar <ParteKardex>(oParteKardex);
        }
Esempio n. 2
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);
        }
Esempio n. 3
0
        public static void RegistrarKardex(ParteKardex oParteKardex)
        {
            oParteKardex.Folio = (oParteKardex.Folio == null ? "" : oParteKardex.Folio);

            // Se verifica si la parte es servicio, para no afectar la existencia nueva
            if (Datos.Exists <Parte>(c => c.ParteID == oParteKardex.ParteID && c.EsServicio.Value && c.Estatus))
            {
                oParteKardex.Cantidad = 0;
            }

            // Se calcula la existencia nueva
            var oParteKardexAnt = Datos.GetListOf <ParteKardex>(c => c.ParteID == oParteKardex.ParteID && c.SucursalID == oParteKardex.SucursalID)
                                  .OrderByDescending(c => c.ParteKardexID).FirstOrDefault();
            decimal mExistencia = (oParteKardexAnt == null ? 0 : oParteKardexAnt.ExistenciaNueva);
            decimal mCantidad   = oParteKardex.Cantidad;

            /* if (oParteKardex.OperacionID == Cat.OperacionesKardex.Venta || oParteKardex.OperacionID == Cat.OperacionesKardex.DevolucionAProveedor
            || oParteKardex.OperacionID == Cat.OperacionesKardex.SalidaInventario || oParteKardex.OperacionID == Cat.OperacionesKardex.SalidaTraspaso)
            ||  mCantidad *= -1;
            */
            oParteKardex.ExistenciaNueva = (mExistencia + mCantidad);

            Datos.Guardar <ParteKardex>(oParteKardex);

            // Se valida la última entrada del kárdex con la existencia

            /*
             * var oParteEx = General.GetEntity<ParteExistencia>(c => c.ParteID == oParteKardex.ParteID && c.SucursalID == oParteKardex.SucursalID && c.Estatus);
             * if (oParteKardex.ExistenciaNueva != oParteEx.Existencia)
             *  UtilLocal.MensajeError(string.Format("Hay una diferencia entre la existencia del Kárdex y la existencia del sistema. ¡Verificar!"
             + "\n\nExistencia Kárdex: {0}\nExistencia Sistema: {1}", oParteKardex.ExistenciaNueva, oParteEx.Existencia));
             */
        }
Esempio n. 4
0
        public static void CopiarCodigosAlternosDeEquivalentes(int iParteID)
        {
            var oPartesEq   = Datos.GetListOf <PartesEquivalentesView>(c => c.ParteID == iParteID);
            var oCodigosAlt = Datos.GetListOf <ParteCodigoAlterno>(c => c.ParteID == iParteID);

            foreach (var oParteEq in oPartesEq)
            {
                foreach (var oCodigoAlt in oCodigosAlt)
                {
                    if (Datos.Exists <ParteCodigoAlterno>(c => c.ParteID == oParteEq.ParteIDEquivalente && c.MarcaParteID == oCodigoAlt.MarcaParteID &&
                                                          c.CodigoAlterno == oCodigoAlt.CodigoAlterno))
                    {
                        continue;
                    }
                    var oCodigoAltNuevo = new ParteCodigoAlterno()
                    {
                        ParteID          = oParteEq.ParteIDEquivalente,
                        MarcaParteID     = oCodigoAlt.MarcaParteID,
                        CodigoAlterno    = oCodigoAlt.CodigoAlterno,
                        RealizoUsuarioID = Theos.UsuarioID
                    };
                    Datos.Guardar <ParteCodigoAlterno>(oCodigoAltNuevo);
                }
            }
        }
Esempio n. 5
0
        public static ResAcc ValidarPermiso(int iUsuarioID, string sPermiso)
        {
            var oUsuarioPerV = Datos.GetEntity <UsuariosPermisosView>(c => c.UsuarioID == iUsuarioID && c.Permiso == sPermiso);

            bool bValido = Datos.Exists <UsuariosPermisosView>(c => c.UsuarioID == iUsuarioID && c.Permiso == sPermiso);

            if (bValido)
            {
                return(new ResAcc(true));
            }
            else
            {
                var oRes     = new ResAcc(false);
                var oPermiso = Datos.GetEntity <Permiso>(c => c.NombrePermiso == sPermiso && c.Estatus);
                if (oPermiso == null)
                {
                    oRes.Mensaje = "El Permiso especificado ni siquiera existe. ¡Échame la mano!";
                }
                else
                {
                    oRes.Mensaje = oPermiso.MensajeDeError;
                }
                return(oRes);
            }
        }
Esempio n. 6
0
        public static bool VerGuardar9500(int iParteID)
        {
            var oParte = Datos.GetEntity <Parte>(c => c.ParteID == iParteID && c.Estatus);

            oParte.Es9500 = !Datos.Exists <ParteMaxMin>(c => c.ParteID == iParteID && c.Maximo > 0);
            Datos.Guardar <Parte>(oParte);
            return(oParte.Es9500.Valor());
        }
Esempio n. 7
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);
        }
Esempio n. 8
0
        public static bool EsFacturaMultiple(int iVentaID)
        {
            var oVentaFaDe = Datos.GetEntity <VentaFacturaDetalle>(c => c.VentaID == iVentaID && c.Estatus);

            if (oVentaFaDe == null)
            {
                return(false);
            }
            else
            {
                return(Datos.Exists <VentasFacturasView>(c => c.VentaFacturaID == oVentaFaDe.VentaFacturaID && c.Ventas > 1));
            }
        }
Esempio n. 9
0
        public static void CopiarPartesComplementariasDeEquivalentes(int iParteID)
        {
            var oPartesEq  = Datos.GetListOf <PartesEquivalentesView>(c => c.ParteID == iParteID);
            var oPartesCom = Datos.GetListOf <PartesComplementariasView>(c => c.ParteID == iParteID);

            foreach (var oParteEq in oPartesEq)
            {
                foreach (var oParteComp in oPartesCom)
                {
                    Guardar.ParteComplementaria(oParteEq.ParteIDEquivalente, oParteComp.ParteIDComplementaria);
                    // Se verifica si se debe guardar la forma inversa
                    if (Datos.Exists <ParteComplementaria>(c => c.ParteID == oParteComp.ParteIDComplementaria && c.ParteIDComplementaria == iParteID))
                    {
                        Guardar.ParteComplementaria(oParteComp.ParteIDComplementaria, oParteEq.ParteIDEquivalente);
                    }
                }
            }
        }
Esempio n. 10
0
        public static void AgregarExistencia(int iParteID, int iSucursalID, decimal mAgregar, string sTabla, int iId)
        {
            // var oParte = General.GetEntity<Parte>(q => q.ParteID == iParteID && q.Estatus);
            // if (!oParte.EsServicio.Valor())
            if (Datos.Exists <Parte>(c => c.ParteID == iParteID && (!c.EsServicio.HasValue || !c.EsServicio.Value) && c.Estatus))
            {
                var oParteEx = Datos.GetEntity <ParteExistencia>(q => q.SucursalID == iSucursalID && q.ParteID == iParteID && q.Estatus);
                oParteEx.Existencia += mAgregar;
                Datos.Guardar <ParteExistencia>(oParteEx);

                // Se registra el histórico de la existencia
                var oExHis = new ParteExistenciaHistorico()
                {
                    ParteID         = iParteID,
                    Cantidad        = mAgregar,
                    ExistenciaNueva = oParteEx.Existencia.Valor(),
                    RelacionTabla   = sTabla,
                    RelacionID      = iId
                };
                Datos.Guardar <ParteExistenciaHistorico>(oExHis);
            }
        }