public static decimal VentaComisionCliente(int iVentaID, int iComisionistaID) { // Se calcula el importe de la comisión var oVentaDetalle = Datos.GetListOf <VentaDetalle>(q => q.VentaID == iVentaID && q.Estatus); var oComisionista = Datos.GetEntity <Cliente>(q => q.ClienteID == iComisionistaID && q.Estatus); if (oComisionista == null) { return(0); } decimal mComision = 0; PreciosParte oPrecios; foreach (var ParteD in oVentaDetalle) { oPrecios = new PreciosParte(ParteD.ParteID); mComision += (((ParteD.PrecioUnitario + ParteD.Iva) - oPrecios.ObtenerPrecio(oComisionista.ListaDePrecios)) * ParteD.Cantidad); } return(mComision); }
public static ResAcc VentaDevolucion(VentaDevolucion oDevolucion, List<VentaDevolucionDetalle> oDetalle) { // Se generan datos predeterminados o globales, en caso de que apliquen oDevolucion.Fecha = (oDevolucion.Fecha != DateTime.MinValue ? oDevolucion.Fecha : DateTime.Now); oDevolucion.SucursalID = (oDevolucion.SucursalID > 0 ? oDevolucion.SucursalID : Theos.SucursalID); // Se guarda la devolución Datos.Guardar<VentaDevolucion>(oDevolucion); // Se guarda el detalle VentaDetalle oParteVenta; foreach (var ParteDetalle in oDetalle) { ParteDetalle.VentaDevolucionID = oDevolucion.VentaDevolucionID; Datos.Guardar<VentaDevolucionDetalle>(ParteDetalle); // Se quita el producto de la venta oParteVenta = Datos.GetEntity<VentaDetalle>(q => q.Estatus && q.VentaID == oDevolucion.VentaID && q.ParteID == ParteDetalle.ParteID && q.Cantidad == ParteDetalle.Cantidad && q.PrecioUnitario == ParteDetalle.PrecioUnitario && q.Iva == ParteDetalle.Iva); oParteVenta.Estatus = false; Datos.Guardar<VentaDetalle>(oParteVenta, false); // Se afecta la existencia // AdmonProc.AgregarExistencia(ParteDetalle.ParteID, GlobalClass.SucursalID, ParteDetalle.Cantidad, Cat.Tablas.VentaDevolucion, oDevolucion.VentaDevolucionID); var oDevV = Datos.GetEntity<VentasDevolucionesView>(c => c.VentaDevolucionID == oDevolucion.VentaDevolucionID); AdmonProc.AfectarExistenciaYKardex(ParteDetalle.ParteID, Theos.SucursalID, Cat.OperacionesKardex.VentaCancelada, oDevV.FolioDeVenta , oDevV.RealizoUsuarioID, oDevV.Cliente, oDevV.ClienteID.ToString(), oDevV.Sucursal, ParteDetalle.Cantidad , (ParteDetalle.PrecioUnitario + ParteDetalle.Iva), Cat.Tablas.VentaDevolucion, oDevolucion.VentaDevolucionID); } // Si es cancelación, se cambia el estatus de la venta var oVenta = Datos.GetEntity<Venta>(c => c.VentaID == oDevolucion.VentaID && c.Estatus); if (oDevolucion.EsCancelacion) { // Se verifica si la venta ha tenido pagos var oVentaV = Datos.GetEntity<VentasView>(c => c.VentaID == oDevolucion.VentaID); oVenta.VentaEstatusID = (oVentaV.Pagado > 0 ? Cat.VentasEstatus.Cancelada : Cat.VentasEstatus.CanceladaSinPago); Datos.Guardar<Venta>(oVenta); } // Se verifican notas de crédito que pudieran cancelarse, por cliente comisionista if (oVenta.ComisionistaClienteID > 0) { // Se calcula el importe de la comisión que se debe quitar var oComisionista = Datos.GetEntity<Cliente>(q => q.ClienteID == oVenta.ComisionistaClienteID && q.Estatus); decimal mComision = 0; PreciosParte oPrecios; foreach (var ParteD in oDetalle) { oPrecios = new PreciosParte(ParteD.ParteID); mComision += (((ParteD.PrecioUnitario + ParteD.Iva) - oPrecios.ObtenerPrecio(oComisionista.ListaDePrecios)) * ParteD.Cantidad); } // Se genera una nota de crédito negativa if (mComision > 0) VentasProc.GenerarNotaDeCredito(oComisionista.ClienteID, (mComision * -1), "", Cat.OrigenesNotaDeCredito.Devolucion, oVenta.VentaID); } return new ResAcc(true); }
public static decimal VentaComisionCliente(int iVentaID, int iComisionistaID) { // Se calcula el importe de la comisión var oVentaDetalle = Datos.GetListOf<VentaDetalle>(q => q.VentaID == iVentaID && q.Estatus); var oComisionista = Datos.GetEntity<Cliente>(q => q.ClienteID == iComisionistaID && q.Estatus); if (oComisionista == null) return 0; decimal mComision = 0; PreciosParte oPrecios; foreach (var ParteD in oVentaDetalle) { oPrecios = new PreciosParte(ParteD.ParteID); mComision += (((ParteD.PrecioUnitario + ParteD.Iva) - oPrecios.ObtenerPrecio(oComisionista.ListaDePrecios)) * ParteD.Cantidad); } return mComision; }
public static ResAcc VentaDevolucion(VentaDevolucion oDevolucion, List <VentaDevolucionDetalle> oDetalle) { // Se generan datos predeterminados o globales, en caso de que apliquen oDevolucion.Fecha = (oDevolucion.Fecha != DateTime.MinValue ? oDevolucion.Fecha : DateTime.Now); oDevolucion.SucursalID = (oDevolucion.SucursalID > 0 ? oDevolucion.SucursalID : Theos.SucursalID); // Se guarda la devolución Datos.Guardar <VentaDevolucion>(oDevolucion); // Se guarda el detalle VentaDetalle oParteVenta; foreach (var ParteDetalle in oDetalle) { ParteDetalle.VentaDevolucionID = oDevolucion.VentaDevolucionID; Datos.Guardar <VentaDevolucionDetalle>(ParteDetalle); // Se quita el producto de la venta oParteVenta = Datos.GetEntity <VentaDetalle>(q => q.Estatus && q.VentaID == oDevolucion.VentaID && q.ParteID == ParteDetalle.ParteID && q.Cantidad == ParteDetalle.Cantidad && q.PrecioUnitario == ParteDetalle.PrecioUnitario && q.Iva == ParteDetalle.Iva); oParteVenta.Estatus = false; Datos.Guardar <VentaDetalle>(oParteVenta, false); // Se afecta la existencia // AdmonProc.AgregarExistencia(ParteDetalle.ParteID, GlobalClass.SucursalID, ParteDetalle.Cantidad, Cat.Tablas.VentaDevolucion, oDevolucion.VentaDevolucionID); var oDevV = Datos.GetEntity <VentasDevolucionesView>(c => c.VentaDevolucionID == oDevolucion.VentaDevolucionID); AdmonProc.AfectarExistenciaYKardex(ParteDetalle.ParteID, Theos.SucursalID, Cat.OperacionesKardex.VentaCancelada, oDevV.FolioDeVenta , oDevV.RealizoUsuarioID, oDevV.Cliente, oDevV.ClienteID.ToString(), oDevV.Sucursal, ParteDetalle.Cantidad , (ParteDetalle.PrecioUnitario + ParteDetalle.Iva), Cat.Tablas.VentaDevolucion, oDevolucion.VentaDevolucionID); } // Si es cancelación, se cambia el estatus de la venta var oVenta = Datos.GetEntity <Venta>(c => c.VentaID == oDevolucion.VentaID && c.Estatus); if (oDevolucion.EsCancelacion) { // Se verifica si la venta ha tenido pagos var oVentaV = Datos.GetEntity <VentasView>(c => c.VentaID == oDevolucion.VentaID); oVenta.VentaEstatusID = (oVentaV.Pagado > 0 ? Cat.VentasEstatus.Cancelada : Cat.VentasEstatus.CanceladaSinPago); Datos.Guardar <Venta>(oVenta); } // Se verifican notas de crédito que pudieran cancelarse, por cliente comisionista if (oVenta.ComisionistaClienteID > 0) { // Se calcula el importe de la comisión que se debe quitar var oComisionista = Datos.GetEntity <Cliente>(q => q.ClienteID == oVenta.ComisionistaClienteID && q.Estatus); decimal mComision = 0; PreciosParte oPrecios; foreach (var ParteD in oDetalle) { oPrecios = new PreciosParte(ParteD.ParteID); mComision += (((ParteD.PrecioUnitario + ParteD.Iva) - oPrecios.ObtenerPrecio(oComisionista.ListaDePrecios)) * ParteD.Cantidad); } // Se genera una nota de crédito negativa if (mComision > 0) { VentasProc.GenerarNotaDeCredito(oComisionista.ClienteID, (mComision * -1), "", Cat.OrigenesNotaDeCredito.Devolucion, oVenta.VentaID); } } return(new ResAcc(true)); }