private void MostrarDetalle(int iCotizacion9500ID) { this.o9500.ctlComDetalle.LimpiarDetalle(); ProductoVenta oProductoV; var Detalle = Datos.GetListOf <Cotizaciones9500DetalleView>(q => q.Cotizacion9500ID == iCotizacion9500ID); foreach (var Producto in Detalle) { oProductoV = new ProductoVenta() { ParteID = Producto.ParteID, NumeroDeParte = Producto.NumeroParte, NombreDeParte = Producto.NombreParte, Cantidad = Producto.Cantidad, PrecioUnitario = UtilTheos.ObtenerPrecioSinIva(Producto.PrecioAlCliente, 3), Iva = UtilTheos.ObtenerIvaDePrecio(Producto.PrecioAlCliente, 3) // PrecioConIva = Producto.PrecioAlCliente }; this.o9500.ctlComDetalle.AgregarProducto(oProductoV); } this.o9500.ctlComDetalle.VerExistenciaLista(); // Se actualiza el Cliente this.oCotizacion9500 = Datos.GetEntity <Cotizacion9500>(q => q.Cotizacion9500ID == iCotizacion9500ID && q.Estatus); this.ComCliente = Datos.GetEntity <ClientesDatosView>(q => q.ClienteID == oCotizacion9500.ClienteID); this.o9500.ClienteCompletar(this.ComCliente); // Se guarda el anticipo this.ComAnticipoSel = oCotizacion9500.Anticipo; }
public GastoCajaAPoliza(decimal mImporte) { InitializeComponent(); this.txtImporte.Text = mImporte.ToString(); this.txtSubtotal.Text = UtilTheos.ObtenerPrecioSinIva(mImporte).ToString(); this.txtIva.Text = UtilTheos.ObtenerIvaDePrecio(mImporte).ToString(); }
private void Ncf_CrearNotaDeCreditoFiscal() { // Se verifica si hay ventas seleccionadas if (this.dgvNcf_Facturas.ContarIncidencias("Ncf_Aplicar", true) == 0) { UtilLocal.MensajeAdvertencia("No hay ninguna venta seleccionada."); return; } // Se obtiene el concepto var oConcepto = UtilLocal.ObtenerValor("Concepto de Nota de Crédito:", "", MensajeObtenerValor.Tipo.TextoLargo); if (oConcepto == null) { return; } // Se valida el permiso var oResU = UtilLocal.ValidarObtenerUsuario("Ventas.NotasDeCreditoFiscales.Agregar"); if (oResU.Error) { return; } int iUsuarioID = oResU.Respuesta.UsuarioID; // Se solicita la validación de autorización var oResA = UtilLocal.ValidarObtenerUsuario("Autorizaciones.Ventas.NotasDeCreditoFiscales.Agregar", "Autorización"); int?iAutorizoID = (oResA.Respuesta == null ? null : (int?)oResA.Respuesta.UsuarioID); // Se genera el detalle de la nota de crédito, para mandar a hacer la factura decimal mTotal = 0; var oNotaDetalle = new List <ProductoVenta>(); oNotaDetalle.Add(new ProductoVenta() { NombreDeParte = Util.Cadena(oConcepto), UnidadDeMedida = "." }); // Se meten las facturas afectadas foreach (DataGridViewRow oFila in this.dgvNcf_Facturas.Rows) { if (!Util.Logico(oFila.Cells["Ncf_Aplicar"].Value)) { continue; } int iVentaID = Util.Entero(oFila.Cells["Ncf_VentaID"].Value); decimal mImporte = Util.Decimal(oFila.Cells["Ncf_Diferencia"].Value); mTotal += mImporte; var oVenta = Datos.GetEntity <Venta>(c => c.VentaID == iVentaID && c.Estatus); oNotaDetalle.Add(new ProductoVenta() { NumeroDeParte = iVentaID.ToString(), // Se usa para mete la VentaID NombreDeParte = string.Format("FACTURA: {0}", oVenta.Folio), // Se usa para mostrar la factura Cantidad = 1, PrecioUnitario = UtilTheos.ObtenerPrecioSinIva(mImporte), Iva = UtilTheos.ObtenerIvaDePrecio(mImporte), UnidadDeMedida = "." }); } if (mTotal == 0) { return; } Cargando.Mostrar(); // Se manda hacer la nota de crédito fiscal var oRes = VentasLoc.GenerarNotaDeCreditoFiscal(oNotaDetalle, this.Cliente.ClienteID, iUsuarioID); if (oRes.Error) { Cargando.Cerrar(); UtilLocal.MensajeAdvertencia(string.Format("Ocurrió un error al hacer la Nota de Crédito Fiscal\n\n{0}", oRes.Mensaje)); return; } // Se modifica el detalle de la Nota de Crédito Fiscal, con datos adicionales de las ventas afectadas var oNcVentas = Datos.GetListOf <NotaDeCreditoFiscalDetalle>(c => c.NotaDeCreditoFiscalID == oRes.Respuesta); foreach (DataGridViewRow oFila in this.dgvNcf_Facturas.Rows) { if (!Util.Logico(oFila.Cells["Ncf_Aplicar"].Value)) { continue; } int iVentaID = Util.Entero(oFila.Cells["Ncf_VentaID"].Value); int iListaPre = Util.Entero(oFila.Cells["Ncf_ListaDePrecios"].Value); var oVentaV = Datos.GetEntity <VentasView>(c => c.VentaID == iVentaID); var oNcVenta = oNcVentas.FirstOrDefault(c => c.VentaID == iVentaID); if (oNcVenta == null) { continue; } oNcVenta.ListaDePreciosUsada = iListaPre; oNcVenta.ImporteAntes = oVentaV.Total; Datos.Guardar <NotaDeCreditoFiscalDetalle>(oNcVenta); } // Se descuenta el importe en cada artículo de las ventas afectadas foreach (DataGridViewRow oFila in this.dgvNcf_Facturas.Rows) { if (!Util.Logico(oFila.Cells["Ncf_Aplicar"].Value)) { continue; } int iVentaID = Util.Entero(oFila.Cells["Ncf_VentaID"].Value); int iListaPre = Util.Entero(oFila.Cells["Ncf_ListaDePrecios"].Value); var oPartes = Datos.GetListOf <VentaDetalle>(c => c.VentaID == iVentaID && c.Estatus); decimal mPrecio = 0; foreach (var oReg in oPartes) { var oPrecio = Datos.GetEntity <PartePrecio>(c => c.ParteID == oReg.ParteID && c.Estatus); switch (iListaPre) { case 1: mPrecio = oPrecio.PrecioUno.Valor(); break; case 2: mPrecio = oPrecio.PrecioDos.Valor(); break; case 3: mPrecio = oPrecio.PrecioTres.Valor(); break; case 4: mPrecio = oPrecio.PrecioCuatro.Valor(); break; case 5: mPrecio = oPrecio.PrecioCinco.Valor(); break; } // Se calcula el Iva oReg.PrecioUnitario = UtilTheos.ObtenerPrecioSinIva(mPrecio); oReg.Iva = (mPrecio - oReg.PrecioUnitario); Datos.Guardar <VentaDetalle>(oReg); } } // Se crea la póliza contable correspondiente (AfeConta) // Una póliza por cada venta afectada var oNotaV = Datos.GetEntity <NotasDeCreditoFiscalesView>(c => c.NotaDeCreditoFiscalID == oRes.Respuesta); foreach (var oReg in oNcVentas) { ContaProc.CrearPolizaAfectacion(Cat.ContaAfectaciones.NotaDeCreditoDescuentoVenta, oReg.NotaDeCreditoFiscalDetalleID , (oNotaV.Serie + oNotaV.Folio), oNotaV.Cliente); } // Se guarda la autorización VentasProc.GenerarAutorizacion(Cat.AutorizacionesProcesos.NotaDeCreditoFiscalCrear, "NotaDeCreditoFiscal", oRes.Respuesta, iAutorizoID); Cargando.Cerrar(); this.NcfLlenarFacturas(); }
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); }