public void AgregarCuentaMovimiento(OrdenesPago ordenPago, DetalleFormaPago pago) { var movimiento = new CuentasMovimiento(); movimiento.ComprobanteId = ordenPago.Id; switch (pago.TipoPago) { case FormaPago.Transferencia: var pagoTrans = pago as PagoTransferencia; movimiento.Debito = pagoTrans.Importe; movimiento.NroMovimiento = pagoTrans.Numero; movimiento.CuentaId = (int)pagoTrans.CuentaId; movimiento.FechaMovimiento = _clock.Now; movimiento.Descripcion = pagoTrans.Descripcion; movimiento.TipoComprobanteId = TipoComprobanteEnum.OrdenPago; movimiento.TipoMovimientoId = (int)TipoMovimientoBancarioEnum.TransferenciaBancariaAProveedores; break; case FormaPago.Deposito: var pagoDeposito = pago as PagoDeposito; movimiento.Debito = pagoDeposito.Importe; movimiento.NroMovimiento = pagoDeposito.Numero; movimiento.CuentaId = (int)pagoDeposito.DepositoCuentaId; movimiento.FechaMovimiento = _clock.Now; movimiento.Descripcion = pagoDeposito.Descripcion; movimiento.TipoComprobanteId = TipoComprobanteEnum.OrdenPago; movimiento.TipoMovimientoId = (int)TipoMovimientoBancarioEnum.DepositoEfectivo; break; } Caja caja = _cajaActual; movimiento.FechaAlta = _clock.Now; movimiento.SucursalAltaId = _context.SucursalActual.Id; movimiento.OperadorAltaId = _context.OperadorActual.Id; _uow.CuentasMovimientos.Agregar(movimiento); }
private void BtnGuardar_Click(object sender, EventArgs e) { if (Monto != ucTotalesSeña.TotalPagar) { _messageBoxDisplayService.ShowError("Los montos no coinciden"); return; } Guid operadorAutoriza = Guid.Empty; if (_formMode == ActionFormMode.Edit) { //////Autorizacion para sin movimiento var operador = this.ObtenerOperadorAdministrador(); if (operador == null) { return; } if (!this.EsOperadorAdmin) { //Guardamos el operador que autorizo la operacion. operadorAutoriza = operador.Id; } } //////////////////////////////// //TODO: Reemplzar el numero cuando se agrege la columna a sucursal. int numeroDeSucursal = 1; ClienteMontoFavor clienteMontoFavor = new ClienteMontoFavor(); clienteMontoFavor.Id = Guid.NewGuid(); clienteMontoFavor.ClienteId = _cliente.Id; clienteMontoFavor.FechaComprobante = _clock.Now; clienteMontoFavor.TipoComprobanteId = TipoComprobanteEnum.SeñaCliente; clienteMontoFavor.LCN = "R" + numeroDeSucursal.ToString().PadLeft(4, '0') + CalcularLCN().PadLeft(8, '0'); clienteMontoFavor.Concepto = "Seña " + clienteMontoFavor.LCN; clienteMontoFavor.Importe = ucTotalesSeña.TotalPagar; clienteMontoFavor.ImpOcupado = 0; clienteMontoFavor.Observaciones = TipoComprobanteEnum.SeñaCliente.ToString(); clienteMontoFavor.FechaAlta = _clock.Now; clienteMontoFavor.OperadorAltaId = Context.OperadorActual.Id; clienteMontoFavor.SucursalAltaId = Context.SucursalActual.Id; if (operadorAutoriza != Guid.Empty) clienteMontoFavor.OperadorAutoriza = operadorAutoriza; Uow.ClientesMontosFavor.Agregar(clienteMontoFavor); //Si el Form=Editar significa que es SinGuardar los movimientos de caja if (_formMode == ActionFormMode.Create) { //ActualizarCaja y CajaMovimiento Caja caja = this.Context.CajaActual; if (caja.Egresos == null) caja.Egresos = 0; caja.Ingresos += (float?)ucTotalesSeña.TotalPagar; caja.Saldo += (float?)ucTotalesSeña.TotalPagar; caja.FechaModificacion = _clock.Now; caja.SucursalModificacionId = 2;//Sucursal del operador caja.OperadorModificacionId = (Context.OperadorActual.Id);//Id el operador Uow.Cajas.Modificar(caja); CajaMovimiento cajaMovimiento = new CajaMovimiento(); cajaMovimiento.Id = Guid.NewGuid(); cajaMovimiento.CajaId = caja.Id; cajaMovimiento.TipoMovimientoCajaId = TipoMovimientoCajaEnum.SeñaCliente; cajaMovimiento.TipoComprobante = TipoComprobanteEnum.SeñaCliente; cajaMovimiento.ComprobanteId = clienteMontoFavor.Id; cajaMovimiento.Importe = ucTotalesSeña.TotalPagar; cajaMovimiento.FechaAlta = _clock.Now; cajaMovimiento.OperadorAltaId = Context.OperadorActual.Id; cajaMovimiento.SucursalAltaId = Context.SucursalActual.Id; cajaMovimiento.PcAlta = Environment.MachineName; //tipos de pagos foreach (VentaPago pago in ucTotalesSeña.Pagos) { switch (pago.TipoPago) { case FormaPago.Efectivo: cajaMovimiento.Efectivo = pago.Importe; break; case FormaPago.Tarjeta: var pagoTarjeta = pago as VentaPagoTarjeta; if (cajaMovimiento.Tarjeta == null) cajaMovimiento.Tarjeta = 0; cajaMovimiento.Tarjeta += pago.Importe; //GUARDAR TARJETA MOVIMIENTO TarjetasMovimiento tarjetasMovimiento = new TarjetasMovimiento(); tarjetasMovimiento.CajaMovimientoId = cajaMovimiento.Id; tarjetasMovimiento.TarjetaId = pagoTarjeta.TarjetaId ?? 0; tarjetasMovimiento.LoteCupon = pagoTarjeta.CuponNumero; tarjetasMovimiento.Fecha = _clock.Now; tarjetasMovimiento.Importe = (float)pago.Importe; tarjetasMovimiento.Estado = 1; // No se tarjetasMovimiento.FechaAlta = _clock.Now; tarjetasMovimiento.SucursalAltaId = Context.SucursalActual.Id; //Sucursal del operador tarjetasMovimiento.OperadorAltaId = (Context.OperadorActual.Id); //Id el operador Uow.TarjetasMovimientos.Agregar(tarjetasMovimiento); break; case FormaPago.Cheque: var pagoCheque = pago as VentaPagoCheque; if (cajaMovimiento.Cheque == null) cajaMovimiento.Cheque = 0; cajaMovimiento.Cheque += pago.Importe; ChequesTercero chequesTercero = new ChequesTercero(); chequesTercero.Id = Guid.NewGuid(); chequesTercero.CajaMovimientoId = cajaMovimiento.Id; chequesTercero.BancoId = pagoCheque.BancoId ?? 0; chequesTercero.NroCheque = pagoCheque.Numero; chequesTercero.Fecha = _clock.Now; chequesTercero.FechaCobro = _clock.Now; chequesTercero.Importe = (float)pago.Importe; chequesTercero.FechaAlta = _clock.Now; chequesTercero.SucursalAltaId = Context.SucursalActual.Id; chequesTercero.OperadorAltaId = (Context.OperadorActual.Id); Uow.ChequesTerceros.Agregar(chequesTercero); break; case FormaPago.Deposito: var pagoDeposito = pago as VentaPagoDeposito; if (cajaMovimiento.Deposito == null) cajaMovimiento.Deposito = 0; //Guardar Cuentas Movimientos cajaMovimiento.Deposito += pago.Importe; CuentasMovimiento cuentasMovimiento = new CuentasMovimiento(); cuentasMovimiento.CuentaId = pagoDeposito.CuentaId; cuentasMovimiento.TipoMovimientoId = 2; //Deposito cuentasMovimiento.FechaMovimiento = pagoDeposito.Fecha; cuentasMovimiento.EstadoMovimientoCuentaId = 0; cuentasMovimiento.TipoComprobanteId = TipoComprobanteEnum.SeñaCliente; cuentasMovimiento.ComprobanteId = clienteMontoFavor.Id; cuentasMovimiento.MonedaId = 0; cuentasMovimiento.CondicionVentaId = CondicionVentaEnum.Contado; cuentasMovimiento.NroMovimiento = pagoDeposito.Numero; cuentasMovimiento.Descripcion = "DEPOSITO NRO " + pagoDeposito.Numero.ToString(); cuentasMovimiento.FechaCobro = _clock.Now; cuentasMovimiento.Debito = 0; cuentasMovimiento.Credito = pago.Importe; cuentasMovimiento.TipoCarga = 2; cuentasMovimiento.CajaId = caja.Id; cuentasMovimiento.FechaAlta = _clock.Now; cuentasMovimiento.OperadorAltaId = Context.OperadorActual.Id; cuentasMovimiento.SucursalAltaId = Context.SucursalActual.Id; Uow.CuentasMovimientos.Agregar(cuentasMovimiento); break; } } Uow.CajaMovimientos.Agregar(cajaMovimiento); } Uow.Commit(); _messageBoxDisplayService.ShowSuccess("Seña generada con éxito"); //Si el Form=Editar significa que es SinGuardar los movimientos de caja if (_formMode == ActionFormMode.Create) { var crearSenia = FormFactory.Create<FrmComprobante>(); crearSenia._concepto = "Seña de Cliente"; crearSenia._LCN = clienteMontoFavor.LCN; var conv = new Conversion(); crearSenia._montoTexto = conv.enletras(ucTotalesSeña.TotalPagar.ToString()); //crearSenia._montoTexto = "cien"; crearSenia.Show(); } BuscarHistorial(); Limpiar(); }
private void GuardarPagosConsignacion() { if (!ValidarPagoConsignacion()) return; //Acumulamos los pagos decimal? efectivo = 0; decimal? efectivoCajaAnterior = 0; decimal? tarjeta = 0; decimal? cheque = 0; decimal? deposito = 0; decimal? transferencia = 0; foreach (var pago in ucTotalesCompraSeña1.Pagos) { switch (pago.TipoPago) { case FormaPago.Efectivo: efectivo += pago.Importe; break; case FormaPago.EfectivoCajaAnterior: efectivoCajaAnterior += pago.Importe; break; case FormaPago.Tarjeta: tarjeta += pago.Importe; break; case FormaPago.Cheque: cheque += pago.Importe; break; case FormaPago.Deposito: deposito += pago.Importe; break; case FormaPago.Transferencia: transferencia += pago.Importe; break; } } #region Guardamos caja en contado //Guardamos la caja Caja caja = new Caja(); if (DtpFechaPago.Value != _clock.Now) { caja = Uow.Cajas.Obtener(c => DbFunctions.TruncateTime(c.FechaAlta) == DtpFechaPago.Value.Date); if (caja == null) { MessageBox.Show("No se encontro una caja válida para esa fecha"); return; } } else { caja = this.Context.CajaActual; //descontar de la caja if (caja.Egresos == null) caja.Egresos = 0; caja.Egresos += (float?)efectivo; if (caja.Saldo == null) caja.Saldo = 0; caja.Saldo -= (float?)ucTotalesCompraSeña1.SubTotal; caja.FechaModificacion = _clock.Now; caja.SucursalModificacionId = Context.SucursalActual.Id; caja.OperadorModificacionId = (Context.OperadorActual.Id); } //aca descontamos las señas en el caso de que se utilicen. var _seña = UsoDeSeña(); var _credito = UsoDeCredito(); var _egreso = UsoEgreso(); if (efectivo > 0) { CajaMovimiento cajaMovimiento = new CajaMovimiento(); cajaMovimiento.Id = Guid.NewGuid(); cajaMovimiento.CajaId = caja.Id; cajaMovimiento.TipoMovimientoCajaId = TipoMovimientoCajaEnum.PagoProveedores; //le paso guid empty pero hay que ver que se le pasa cajaMovimiento.ComprobanteId = _pagoIdConsignacion; cajaMovimiento.Importe = efectivo; cajaMovimiento.ImpFac = (decimal?)ucTotalesCompraSeña1.SubTotal; cajaMovimiento.Efectivo = efectivo; cajaMovimiento.Senia = _seña + _credito + _egreso; if (_seña > 0) { //cajaMovimiento.Senia = _seña; _seña = 0; } if (_credito > 0) { //cajaMovimiento.Senia = _seña; _credito = 0; } if (_egreso > 0) { _egreso = 0; } cajaMovimiento.FechaAlta = DtpFechaPago.Value; cajaMovimiento.PcAlta = System.Environment.MachineName; cajaMovimiento.OperadorAltaId = Context.OperadorActual.Id; cajaMovimiento.SucursalAltaId = Context.SucursalActual.Id; cajaMovimiento.OperadorModificacionId = Context.OperadorActual.Id; cajaMovimiento.FechaModificacion = _clock.Now; cajaMovimiento.SucursalModificacionId = Context.SucursalActual.Id; cajaMovimiento.TipoComprobante = TipoComprobanteEnum.PagoProveedores; Uow.CajaMovimientos.Agregar(cajaMovimiento); } if (tarjeta > 0 || deposito > 0 || cheque > 0 || efectivoCajaAnterior > 0 || transferencia > 0) { CajaMovimiento cajaMovimientoAnterior = new CajaMovimiento(); cajaMovimientoAnterior.Id = Guid.NewGuid(); cajaMovimientoAnterior.CajaId = caja.Id; //cajaMovimientoAnterior.TipoMovimientoCajaId = // TipoMovimientoCajaEnum.PagoProveedorCajaAnterior; -2 cajaMovimientoAnterior.TipoMovimientoCajaId = TipoMovimientoCajaEnum.PagoCtaProveedorCajaAnterior; cajaMovimientoAnterior.ComprobanteId = _pagoIdConsignacion; cajaMovimientoAnterior.Importe = tarjeta + deposito + cheque + efectivoCajaAnterior + transferencia; cajaMovimientoAnterior.ImpFac = (decimal?)ucTotalesCompraSeña1.SubTotal; cajaMovimientoAnterior.FechaModificacion = _clock.Now; cajaMovimientoAnterior.PcAlta = System.Environment.MachineName; cajaMovimientoAnterior.OperadorAltaId = Context.OperadorActual.Id; cajaMovimientoAnterior.SucursalAltaId = Context.SucursalActual.Id; cajaMovimientoAnterior.OperadorModificacionId = Context.OperadorActual.Id; cajaMovimientoAnterior.SucursalModificacionId = Context.SucursalActual.Id; cajaMovimientoAnterior.TipoComprobante = TipoComprobanteEnum.PagoProveedores; cajaMovimientoAnterior.Efectivo = efectivoCajaAnterior; cajaMovimientoAnterior.Tarjeta = tarjeta; cajaMovimientoAnterior.Deposito = deposito; cajaMovimientoAnterior.Cheque = cheque; cajaMovimientoAnterior.Transferencia = transferencia; //if (cheque > 0) // cajaMovimientoAnterior.FechaAlta = tipo; //else cajaMovimientoAnterior.FechaAlta = _clock.Now; cajaMovimientoAnterior.Senia = _seña + _credito + _egreso; Uow.CajaMovimientos.Agregar(cajaMovimientoAnterior); //Guardamos el movimiento del depósito foreach (var pago in ucTotalesCompraSeña1.Pagos) { switch (pago.TipoPago) { case FormaPago.Cheque: // HACER ALGO break; case FormaPago.Deposito: var pagoDeposito = pago as VentaPagoDeposito; CuentasMovimiento cuentasMovimiento = new CuentasMovimiento(); cuentasMovimiento.CuentaId = pagoDeposito.CuentaId ?? 0; cuentasMovimiento.TipoMovimientoId = 1;//Deposito a proveedor cuentasMovimiento.FechaMovimiento = pagoDeposito.Fecha; cuentasMovimiento.EstadoMovimientoCuentaId = 0; //CONTROLAR!! cuentasMovimiento.TipoComprobanteId = TipoComprobanteEnum.PagoProveedores; //le paso guid empty pero hay que ver que se le pasa cuentasMovimiento.ComprobanteId = Guid.Empty; cuentasMovimiento.MonedaId = 0; cuentasMovimiento.NroMovimiento = pagoDeposito.Numero; cuentasMovimiento.Descripcion = "DEPOSITO NRO " + pagoDeposito.Numero.ToString(); cuentasMovimiento.FechaCobro = _clock.Now; cuentasMovimiento.Debito = pago.Importe; cuentasMovimiento.Credito = 0; cuentasMovimiento.TipoCarga = 1; cuentasMovimiento.CajaId = caja.Id; cuentasMovimiento.FechaAlta = _clock.Now; cuentasMovimiento.OperadorAltaId = Context.OperadorActual.Id; cuentasMovimiento.SucursalAltaId = Context.SucursalActual.Id; Uow.CuentasMovimientos.Agregar(cuentasMovimiento); break; case FormaPago.Transferencia: var pagoTransferencia = pago as VentaPagoTransferencia; CuentasMovimiento cuentasMovimientoTransferecia = new CuentasMovimiento(); cuentasMovimientoTransferecia.CuentaId = pagoTransferencia.CuentaId ?? 0; cuentasMovimientoTransferecia.TipoMovimientoId = 1;//Deposito a proveedor cuentasMovimientoTransferecia.FechaMovimiento = pagoTransferencia.Fecha; cuentasMovimientoTransferecia.EstadoMovimientoCuentaId = 0; //CONTROLAR!! cuentasMovimientoTransferecia.TipoComprobanteId = TipoComprobanteEnum.PagoProveedores; //le paso guid empty pero hay que ver que se le pasa cuentasMovimientoTransferecia.ComprobanteId = Guid.Empty; cuentasMovimientoTransferecia.MonedaId = 0; cuentasMovimientoTransferecia.NroMovimiento = pagoTransferencia.Numero; cuentasMovimientoTransferecia.Descripcion = "TRANSFERENCIA NRO " + pagoTransferencia.Numero.ToString(); cuentasMovimientoTransferecia.FechaCobro = _clock.Now; cuentasMovimientoTransferecia.Debito = pago.Importe; cuentasMovimientoTransferecia.Credito = 0; cuentasMovimientoTransferecia.TipoCarga = 1; cuentasMovimientoTransferecia.CajaId = caja.Id; cuentasMovimientoTransferecia.FechaAlta = _clock.Now; cuentasMovimientoTransferecia.OperadorAltaId = Context.OperadorActual.Id; cuentasMovimientoTransferecia.SucursalAltaId = Context.SucursalActual.Id; Uow.CuentasMovimientos.Agregar(cuentasMovimientoTransferecia); break; } } } Uow.Cajas.Modificar(caja); #endregion Uow.Commit(); _messageBoxDisplayService.ShowSuccess(Resources.MessageSuccessPagoExitoso); }
private void BtnGuardar_Click(object sender, EventArgs e) { if (_proveedor == null) { return; } if (!ucTitulosCompra.Titulos.Any()) { _messageBoxDisplayService.ShowError("Debe seleccionar al menos un libro para la compra."); return; } if (!ucTotalesCompraSeña1.Validar()) { return; } if (ucTipoCompra.TipoComprobanteSeleccionado== Entidades.Enums.TipoComprobanteEnum.FacCpraContado) { if(TxtRemito1.Text==""||TxtRemito2.Text==""||TxtFactura1.Text==""||TxtFactura2.Text=="") return; } if (ucTipoCompra.TipoComprobanteSeleccionado == Entidades.Enums.TipoComprobanteEnum.FacCpraCtaCte) { if (TxtRemito1.Text == "" || TxtRemito2.Text == "" || TxtFactura1.Text == "" || TxtFactura2.Text == "" || ucCuentaCorrienteCompra.Cuotas == null) return; } if (ucTipoCompra.TipoComprobanteSeleccionado == Entidades.Enums.TipoComprobanteEnum.RemitosConsignacProveedor) { if (TxtRemito1.Text == "" || TxtRemito2.Text == "" || DtpFechaVencimiento.Value.Date<_clock.Now.Date) return; } //Acumulamos los pagos decimal? efectivo = 0; decimal? efectivoCajaAnterior = 0; decimal? tarjeta = 0; decimal? cheque = 0; decimal? deposito = 0; decimal? transferencia = 0; foreach (var pago in ucTotalesCompraSeña1.Pagos) { switch (pago.TipoPago) { case FormaPago.Efectivo: efectivo += pago.Importe; break; case FormaPago.EfectivoCajaAnterior: efectivoCajaAnterior += pago.Importe; break; case FormaPago.Tarjeta: tarjeta += pago.Importe; break; case FormaPago.Cheque: cheque += pago.Importe; //Guardar una cajaMovimiento por cada cheque con la fecha de cobro como fecha de alta //var cajaMovimiento = new CajaMovimiento(); //cajaMovimiento.Id = Guid.NewGuid(); //cajaMovimiento.CajaId = Context.CajaActual.Id; //cajaMovimiento.TipoMovimientoCajaId = TipoMovimientoCajaEnum.PagoProveedorCajaAnterior; //cajaMovimiento.TipoComprobante = ucTipoCompra.TipoComprobanteSeleccionado; //cajaMovimiento.ComprobanteId = _idCompra; //cajaMovimiento.Importe = pago.Importe; //cajaMovimiento.ImpFac = pago.Importe; //cajaMovimiento.Cheque = pago.Importe; //VentaPagoCheque vcheque = (VentaPagoCheque)pago; //cajaMovimiento.FechaAlta = vcheque.FechaCobro; //cajaMovimiento.OperadorAltaId = Context.OperadorActual.Id; //cajaMovimiento.SucursalAltaId = Context.SucursalActual.Id; //Uow.CajaMovimientos.Agregar(cajaMovimiento); break; case FormaPago.Deposito: deposito += pago.Importe; break; case FormaPago.Transferencia: transferencia += pago.Importe; break; } } //Pedimos autorización para caja anterior if (efectivoCajaAnterior > 0) { Guid operadorAutoriza = Guid.Empty; //////Autorizacion para sin movimiento var operador = this.ObtenerOperadorAdministrador(); if (operador == null) { return; } if (!this.EsOperadorAdmin) { //Guardamos el operador que autorizo la operacion. operadorAutoriza = operador.Id; } } //Compras Guid _idCompra = Guid.NewGuid(); string _lcn = ""; PuntoVenta = Context.SucursalActual.SucursalNumero ?? 1; Compra compraNueva = new Compra(); switch (ucTipoCompra.TipoComprobanteSeleccionado) { case Entidades.Enums.TipoComprobanteEnum.FacCpraContado: EstadoCompra = 1; break; case Entidades.Enums.TipoComprobanteEnum.FacCpraCtaCte: EstadoCompra = 1; break; case Entidades.Enums.TipoComprobanteEnum.RemitosConsignacProveedor: compraNueva.FechaVencimiento = DtpFechaVencimiento.Value; NumeroComprobante = (Convert.ToInt32(TxtRemito2.Text)).ToString(); LetraComprobante = "X"; EstadoCompra = 1; break; case Entidades.Enums.TipoComprobanteEnum.IngresosProducción: NumeroComprobante = (Convert.ToInt16(TxtRemito2.Text)).ToString(); DdlFacturaTipo.Enabled = true; DdlFacturaTipo.Visible = true; LetraComprobante = "X"; EstadoCompra = 1; break; case Entidades.Enums.TipoComprobanteEnum.RemitosAnulacConsigVend: EstadoCompra = 2; break; } //controlo cuantos ceros me faltan para armar el lcn y los agrego en la variable ceros string _ceros = ""; for (int i = 0; i < (13 - (NumeroComprobante.Count() + 3 + PuntoVenta.ToString().Count())); i++) { _ceros += "0"; } _lcn += LetraComprobante + PuntoVenta.ToString().PadLeft(3,'0')+ _ceros + NumeroComprobante; NumeroComprobante = TxtRemito1.Text + TxtRemito2.Text; //compraNueva. compraNueva.Id = _idCompra; compraNueva.LCN = _lcn; compraNueva.TipoComprobanteId = ucTipoCompra.TipoComprobanteSeleccionado; compraNueva.ProveedorId = _proveedor.Id; compraNueva.LetraComprobante = LetraComprobante; compraNueva.PuntoVenta = PuntoVenta; compraNueva.NumeroComprobante = NumeroComprobante; compraNueva.FechaComprobante = DtpFechaEmision.Value; compraNueva.Concepto = ucTipoCompra.TipoComprobanteSeleccionado.ToString(); compraNueva.ImporteNeto = ucTitulosCompra.CalcularSubTotal(); compraNueva.Observaciones = Observaciones; compraNueva.EstadoCompraId = EstadoCompra; compraNueva.OperadorAltaId = (Context.OperadorActual.Id); compraNueva.SucursalAltaId = Context.SucursalActual.Id; compraNueva.FechaAlta = _clock.Now; Uow.Compras.Agregar(compraNueva); //FacturaCompra. FacturasCompra facturaCompra = new FacturasCompra(); facturaCompra.Id = Guid.NewGuid(); facturaCompra.CompraId = _idCompra; facturaCompra.TipoComprobante = ucTipoCompra.TipoComprobanteSeleccionado; facturaCompra.ProveedorId = _proveedor.Id; facturaCompra.LCN = _lcn; facturaCompra.PuntoVenta = PuntoVenta; facturaCompra.NumeroComprobante = NumeroComprobante; facturaCompra.Concepto = ucTipoCompra.TipoComprobanteSeleccionado.ToString(); facturaCompra.FechaComprobante = _clock.Now; if (ucTipoCompra.TipoComprobanteSeleccionado == Entidades.Enums.TipoComprobanteEnum.FacCpraConsigCliente) facturaCompra.FechaVencimiento = DtpFechaEmision.Value; facturaCompra.ImporteNeto = ucTotalesCompraSeña1.SubTotal; facturaCompra.ImporteIVA = ucTotalesCompraSeña1.SubTotal; facturaCompra.EstadoId = 0; facturaCompra.FechaAlta = _clock.Now; facturaCompra.SucursalAltaId = Context.SucursalActual.Id; facturaCompra.OperadorAltaId = Context.OperadorActual.Id; Uow.FacturasCompras.Agregar(facturaCompra); //Remito if (ucTipoCompra.TipoComprobanteSeleccionado == Entidades.Enums.TipoComprobanteEnum.FacCpraContado || ucTipoCompra.TipoComprobanteSeleccionado == Entidades.Enums.TipoComprobanteEnum.FacCpraCtaCte || ucTipoCompra.TipoComprobanteSeleccionado == Entidades.Enums.TipoComprobanteEnum.FacCpraConsigCliente) { RemitosCompra remitoCompra = new RemitosCompra(); remitoCompra.Id = Guid.NewGuid(); _remitoID = remitoCompra.Id; remitoCompra.CompraId = _idCompra; //remitoCompra.TipoComprobante = ucTipoCompra.TipoComprobanteSeleccionado; remitoCompra.ProveedorId = _proveedor.Id; remitoCompra.LCN = _lcn; remitoCompra.PuntoVenta = PuntoVenta; remitoCompra.NumeroComprobante = NumeroComprobante; remitoCompra.Concepto = ucTipoCompra.TipoComprobanteSeleccionado.ToString(); remitoCompra.FechaComprobante = DtpFechaEmision.Value; if (ucTipoCompra.TipoComprobanteSeleccionado == Entidades.Enums.TipoComprobanteEnum.FacCpraConsigCliente) remitoCompra.FechaVencimiento = DtpFechaVencimiento.Value; remitoCompra.ImporteNeto = ucTotalesCompraSeña1.SubTotal; remitoCompra.ImporteIVA = ucTotalesCompraSeña1.SubTotal; remitoCompra.Observaciones = Observaciones; remitoCompra.EstadoId = EstadoCompra; remitoCompra.FechaAlta = _clock.Now; remitoCompra.SucursalAltaId = Context.SucursalActual.Id; remitoCompra.OperadorAltaId = Context.SucursalActual.OperadorAltaId; Uow.RemitosCompra.Agregar(remitoCompra); } //TitulosStock. & Compra detalle foreach (var titulo in ucTitulosCompra.Titulos) { var tituloStock = Uow.TitulosStock.Obtener(ts => ts.TituloId == titulo.TituloId && ts.SucursalId == Context.SucursalActual.Id); //Compra detalle ComprasDetalle compraDetalle = new ComprasDetalle(); compraDetalle.CompraId = _idCompra; compraDetalle.Id = Guid.NewGuid(); compraDetalle.TituloId = titulo.TituloId; if (ucTipoCompra.TipoComprobanteSeleccionado == Entidades.Enums.TipoComprobanteEnum.RemitosConsignacProveedor) { compraDetalle.CntCn = titulo.CantidadCompra; compraDetalle.CntPr = 0; } else { compraDetalle.CntPr = titulo.CantidadCompra; compraDetalle.CntCn = 0; } compraDetalle.PrecioCompra = titulo.PrecioBase; compraDetalle.PrecioVenta = titulo.PrecioVenta; compraDetalle.FechaAlta = _clock.Now; compraDetalle.SucursalAltaId = Context.SucursalActual.Id; compraDetalle.OperadorAltaId = Context.OperadorActual.Id; compraDetalle.FechaModificacion = _clock.Now; compraDetalle.SucursalModificacionId = Context.SucursalActual.Id; compraDetalle.OperadorModificacionId = Context.OperadorActual.Id; Uow.ComprasDetalles.Agregar(compraDetalle); //Aumentar stock //deacuerdo al tipo de compra modificar el stock propio o en consigancion if (tituloStock == null) { TituloStock tituloStockNuevo = new TituloStock(); tituloStockNuevo.TituloId = titulo.TituloId; tituloStockNuevo.SucursalId = Context.SucursalActual.Id; if (ucTipoCompra.TipoComprobanteSeleccionado == Entidades.Enums.TipoComprobanteEnum.RemitosConsignacProveedor) { tituloStockNuevo.StkPr = 0; tituloStockNuevo.StkCn = titulo.CantidadCompra; } else { tituloStockNuevo.StkPr = titulo.CantidadCompra; tituloStockNuevo.StkCn = 0; } tituloStockNuevo.FechaAlta = _clock.Now; tituloStockNuevo.OperadorAltaId = (Context.OperadorActual.Id); tituloStockNuevo.SucursalAltaId = Context.SucursalActual.Id; Uow.TitulosStock.Agregar(tituloStockNuevo); } else { //Aumento el stock propio o consignado de acuerdo a la opcion seleccionada. if (ucTipoCompra.TipoComprobanteSeleccionado == Entidades.Enums.TipoComprobanteEnum.RemitosConsignacProveedor) { if (tituloStock.StkCn == null) tituloStock.StkCn = titulo.CantidadCompra; else tituloStock.StkCn += titulo.CantidadCompra; } else if (tituloStock.StkPr == null) tituloStock.StkPr = titulo.CantidadCompra; else tituloStock.StkPr += titulo.CantidadCompra; tituloStock.FechaModificacion = _clock.Now; tituloStock.OperadorModificacionId = (Context.OperadorActual.Id); tituloStock.SucursalModificacionId = Context.SucursalActual.Id; Uow.TitulosStock.Modificar(tituloStock); } //FacturasCompraDetalle. FacturasComprasDetalle facturasComprasDetalle = new FacturasComprasDetalle(); facturasComprasDetalle.Id = Guid.NewGuid(); facturasComprasDetalle.FacturaCompraId = facturaCompra.Id; facturasComprasDetalle.TituloId = titulo.TituloId; if (ucTipoCompra.TipoComprobanteSeleccionado == Entidades.Enums.TipoComprobanteEnum.RemitosConsignacProveedor) { facturasComprasDetalle.CntCn = titulo.CantidadCompra; facturasComprasDetalle.CntPr = 0; } else { facturasComprasDetalle.CntPr = titulo.CantidadCompra; facturasComprasDetalle.CntCn = 0; } facturasComprasDetalle.PrecioCompra = titulo.PrecioBase; facturasComprasDetalle.PrecioVenta = titulo.PrecioVenta; facturasComprasDetalle.FechaAlta = _clock.Now; facturasComprasDetalle.SucursalAltaId = Context.SucursalActual.Id; facturasComprasDetalle.OperadorAltaId = (Context.OperadorActual.Id); Uow.FacturasComprasDetalles.Agregar(facturasComprasDetalle); if (ucTipoCompra.TipoComprobanteSeleccionado == Entidades.Enums.TipoComprobanteEnum.RemitosConsignacProveedor) { //(TitulosConsiganciones). TitulosConsignacion tituloConsignacion = new TitulosConsignacion(); tituloConsignacion.Id = Guid.NewGuid(); tituloConsignacion.TituloId = titulo.TituloId; tituloConsignacion.ClienteId = Guid.Empty; tituloConsignacion.ProveedorId = _proveedor.Id; tituloConsignacion.TipoConsignacion = _tipoConsignacion; tituloConsignacion.CntPr = 0; tituloConsignacion.CntCn = titulo.CantidadCompra.GetValueOrDefault(); tituloConsignacion.CntVn = 0; tituloConsignacion.FechaAlta = _clock.Now; tituloConsignacion.SucursalAltaId = Context.SucursalActual.Id; tituloConsignacion.OperadorAltaId = Context.OperadorActual.Id; Uow.TitulosConsignaciones.Agregar(tituloConsignacion); } //Remito Detalle if (ucTipoCompra.TipoComprobanteSeleccionado == Entidades.Enums.TipoComprobanteEnum.FacCpraContado || ucTipoCompra.TipoComprobanteSeleccionado == Entidades.Enums.TipoComprobanteEnum.FacCpraCtaCte || ucTipoCompra.TipoComprobanteSeleccionado == Entidades.Enums.TipoComprobanteEnum.FacCpraConsigCliente) { RemitosCompraDetalle remitoCompraDetalle = new RemitosCompraDetalle(); remitoCompraDetalle.Id = Guid.NewGuid(); remitoCompraDetalle.RemitoCompraId = _remitoID; remitoCompraDetalle.TituloId = titulo.TituloId; if (ucTipoCompra.TipoComprobanteSeleccionado == Entidades.Enums.TipoComprobanteEnum.FacCpraConsigCliente) remitoCompraDetalle.CntCn = titulo.CantidadCompra; else remitoCompraDetalle.CntPr = titulo.CantidadCompra; remitoCompraDetalle.PrecioCompra = titulo.PrecioBase; remitoCompraDetalle.PrecioVenta = titulo.PrecioVenta; remitoCompraDetalle.FechaAlta = _clock.Now; remitoCompraDetalle.SucursalAltaId = Context.SucursalActual.Id; remitoCompraDetalle.OperadorAltaId = Context.OperadorActual.Id; Uow.RemitosCompraDetalle.Agregar(remitoCompraDetalle); } } //Cuenta corriente if (ucTipoCompra.TipoComprobanteSeleccionado == Entidades.Enums.TipoComprobanteEnum.FacCpraCtaCte) { //Guardo toda la cuenta corriente var cuotas = ucCuentaCorrienteCompra.Cuotas; for (int i = 1; i <= cuotas; i++) { ProveedoresCuentasCorriente proveedoresCuentaCorriente = new ProveedoresCuentasCorriente(); proveedoresCuentaCorriente.Id = Guid.NewGuid(); proveedoresCuentaCorriente.CompraId = _idCompra; proveedoresCuentaCorriente.ProveedorId = _proveedor.Id; proveedoresCuentaCorriente.Cuota = i; proveedoresCuentaCorriente.Fecha = _clock.Now; DateTime venc = ucCuentaCorrienteCompra.Vencimiento; proveedoresCuentaCorriente.FechaVencimiento = venc.AddMonths(i - 1); proveedoresCuentaCorriente.Importe = Convert.ToDecimal(ucCuentaCorrienteCompra.Montocuota); proveedoresCuentaCorriente.Pagado = 0; proveedoresCuentaCorriente.Observaciones = ""; proveedoresCuentaCorriente.FechaAlta = _clock.Now; proveedoresCuentaCorriente.SucursalAltaId = Context.SucursalActual.Id; proveedoresCuentaCorriente.OperadorAltaId = Context.OperadorActual.Id; proveedoresCuentaCorriente.FechaModificacion = _clock.Now; proveedoresCuentaCorriente.SucursalModificacionId = Context.SucursalActual.Id; proveedoresCuentaCorriente.OperadorModificacionId = Context.OperadorActual.Id; Uow.ProveedoresCuentasCorrientes.Agregar(proveedoresCuentaCorriente); } } #region Guardamos caja en contado //Guardamos la caja if (ucTipoCompra.TipoComprobanteSeleccionado == TipoComprobanteEnum.FacCpraContado) { Caja caja = this.Context.CajaActual; switch (ucTipoCompra.TipoComprobanteSeleccionado) { case TipoComprobanteEnum.FacCpraContado: //descontar de la caja if (caja.Egresos == null) caja.Egresos = 0; caja.Egresos += (float?) efectivo; if (caja.Saldo == null) caja.Saldo = 0; caja.Saldo -= (float?) ucTotalesCompraSeña1.SubTotal; caja.FechaModificacion = _clock.Now; caja.SucursalModificacionId = Context.SucursalActual.Id; caja.OperadorModificacionId = (Context.OperadorActual.Id); //aca descontamos las señas en el caso de que se utilicen. var _seña = UsoDeSeña(); var _credito = UsoDeCredito(); var _egreso = UsoEgreso(); //Desde aca Controlar if (efectivo > 0 || (_seña+_credito+_egreso) >0) { CajaMovimiento cajaMovimiento = new CajaMovimiento(); cajaMovimiento.Id = Guid.NewGuid(); cajaMovimiento.CajaId = caja.Id; cajaMovimiento.TipoMovimientoCajaId = TipoMovimientoCajaEnum.PagoProveedores; cajaMovimiento.ComprobanteId = compraNueva.Id; cajaMovimiento.Importe = efectivo; cajaMovimiento.ImpFac = (decimal?)ucTotalesCompraSeña1.SubTotal; cajaMovimiento.Efectivo = efectivo; cajaMovimiento.Senia = _seña + _credito + _egreso ; if (_seña > 0) { // cajaMovimiento.Senia = _seña; _seña = 0; } if (_credito > 0) { //cajaMovimiento.Senia += _credito; _credito = 0; } if (_egreso > 0) { //cajaMovimiento.Senia += _credito; _egreso = 0; } cajaMovimiento.FechaAlta = _clock.Now; cajaMovimiento.PcAlta = System.Environment.MachineName; cajaMovimiento.OperadorAltaId = Context.OperadorActual.Id; cajaMovimiento.SucursalAltaId = Context.SucursalActual.Id; cajaMovimiento.TipoComprobante = TipoComprobanteEnum.FacCpraContado; Uow.CajaMovimientos.Agregar(cajaMovimiento); } if (tarjeta > 0 || deposito > 0 || cheque > 0 || efectivoCajaAnterior > 0 || transferencia > 0) { CajaMovimiento cajaMovimientoAnterior = new CajaMovimiento(); cajaMovimientoAnterior.Id = Guid.NewGuid(); cajaMovimientoAnterior.CajaId = caja.Id; cajaMovimientoAnterior.TipoMovimientoCajaId = TipoMovimientoCajaEnum.PagoProveedorCajaAnterior; cajaMovimientoAnterior.ComprobanteId = compraNueva.Id; cajaMovimientoAnterior.Importe = tarjeta+deposito+cheque+efectivoCajaAnterior+transferencia; cajaMovimientoAnterior.ImpFac = (decimal?)ucTotalesCompraSeña1.SubTotal; cajaMovimientoAnterior.FechaAlta = _clock.Now; cajaMovimientoAnterior.FechaModificacion = _clock.Now; cajaMovimientoAnterior.PcAlta = System.Environment.MachineName; cajaMovimientoAnterior.OperadorAltaId = Context.OperadorActual.Id; cajaMovimientoAnterior.SucursalAltaId = Context.SucursalActual.Id; cajaMovimientoAnterior.OperadorModificacionId = Context.OperadorActual.Id; cajaMovimientoAnterior.SucursalModificacionId = Context.SucursalActual.Id; cajaMovimientoAnterior.TipoComprobante = TipoComprobanteEnum.FacCpraContado; cajaMovimientoAnterior.Efectivo = efectivoCajaAnterior; cajaMovimientoAnterior.Tarjeta = tarjeta; cajaMovimientoAnterior.Deposito = deposito; cajaMovimientoAnterior.Cheque = cheque; cajaMovimientoAnterior.Transferencia = transferencia; cajaMovimientoAnterior.Senia = _seña + _credito + _egreso; //if (_seña > 0) //{ // cajaMovimientoAnterior.Senia = _seña; //} Uow.CajaMovimientos.Agregar(cajaMovimientoAnterior); //Guardamos el movimiento del depósito foreach (var pago in ucTotalesCompraSeña1.Pagos) { switch (pago.TipoPago) { case FormaPago.Cheque: // HACER ALGO break; case FormaPago.Deposito: var pagoDeposito = pago as VentaPagoDeposito; CuentasMovimiento cuentasMovimiento = new CuentasMovimiento(); cuentasMovimiento.CuentaId = pagoDeposito.CuentaId ?? 0; cuentasMovimiento.TipoMovimientoId = 1;//Deposito a proveedor cuentasMovimiento.FechaMovimiento = pagoDeposito.Fecha; cuentasMovimiento.EstadoMovimientoCuentaId = 0; cuentasMovimiento.TipoComprobanteId = ucTipoCompra.TipoComprobanteSeleccionado; cuentasMovimiento.ComprobanteId = compraNueva.Id; cuentasMovimiento.MonedaId = 0; cuentasMovimiento.NroMovimiento = pagoDeposito.Numero; cuentasMovimiento.Descripcion = "DEPOSITO NRO " + pagoDeposito.Numero.ToString(); cuentasMovimiento.FechaCobro = _clock.Now; cuentasMovimiento.Debito = pago.Importe; cuentasMovimiento.Credito = 0; cuentasMovimiento.TipoCarga = 1; cuentasMovimiento.CajaId = caja.Id; cuentasMovimiento.FechaAlta = _clock.Now; cuentasMovimiento.OperadorAltaId = Context.OperadorActual.Id; cuentasMovimiento.SucursalAltaId = Context.SucursalActual.Id; Uow.CuentasMovimientos.Agregar(cuentasMovimiento); break; case FormaPago.Transferencia: var pagoTransferencia = pago as VentaPagoTransferencia; CuentasMovimiento cuentasMovimientoTransferecia = new CuentasMovimiento(); cuentasMovimientoTransferecia.CuentaId = pagoTransferencia.CuentaId ?? 0; cuentasMovimientoTransferecia.TipoMovimientoId = 1;//Deposito a proveedor cuentasMovimientoTransferecia.FechaMovimiento = pagoTransferencia.Fecha; cuentasMovimientoTransferecia.EstadoMovimientoCuentaId = 0; cuentasMovimientoTransferecia.TipoComprobanteId = ucTipoCompra.TipoComprobanteSeleccionado; cuentasMovimientoTransferecia.ComprobanteId = compraNueva.Id; cuentasMovimientoTransferecia.MonedaId = 0; cuentasMovimientoTransferecia.NroMovimiento = pagoTransferencia.Numero; cuentasMovimientoTransferecia.Descripcion = "TRANSFERENCIA NRO " + pagoTransferencia.Numero.ToString(); cuentasMovimientoTransferecia.FechaCobro = _clock.Now; cuentasMovimientoTransferecia.Debito = pago.Importe; cuentasMovimientoTransferecia.Credito = 0; cuentasMovimientoTransferecia.TipoCarga = 1; cuentasMovimientoTransferecia.CajaId = caja.Id; cuentasMovimientoTransferecia.FechaAlta = _clock.Now; cuentasMovimientoTransferecia.OperadorAltaId = Context.OperadorActual.Id; cuentasMovimientoTransferecia.SucursalAltaId = Context.SucursalActual.Id; Uow.CuentasMovimientos.Agregar(cuentasMovimientoTransferecia); break; } } } break; } Uow.Cajas.Modificar(caja); } #endregion #region "Guardar cuenta corriente" if (ucTipoCompra.TipoComprobanteSeleccionado == TipoComprobanteEnum.FacCpraCtaCte) { //aca descontamos las señas en el caso de que se utilicen. var _seña = UsoDeSeña(); var _credito = UsoDeCredito(); var _egreso = UsoEgreso(); Caja caja = this.Context.CajaActual; CajaMovimiento cajaMovimiento = new CajaMovimiento(); cajaMovimiento.Id = Guid.NewGuid(); cajaMovimiento.CajaId = caja.Id; cajaMovimiento.TipoMovimientoCajaId = TipoMovimientoCajaEnum.PagoProveedores; cajaMovimiento.TipoComprobante = ucTipoCompra.TipoComprobanteSeleccionado; cajaMovimiento.ComprobanteId = compraNueva.Id; cajaMovimiento.Senia = _seña + _credito + _egreso; cajaMovimiento.ImpFac = (decimal?)ucTotalesCompraSeña1.SubTotal; ////////////////////////////////////////////////////////////////////////////// if (efectivo > 0) { cajaMovimiento.Importe = efectivo; cajaMovimiento.Efectivo = efectivo; cajaMovimiento.Senia = _seña + _credito + _egreso; } if (tarjeta > 0 || deposito > 0 || cheque > 0 || efectivoCajaAnterior > 0 || transferencia > 0) { CajaMovimiento cajaMovimientoAnterior = new CajaMovimiento(); cajaMovimientoAnterior.Id = Guid.NewGuid(); cajaMovimientoAnterior.CajaId = caja.Id; cajaMovimientoAnterior.TipoMovimientoCajaId = TipoMovimientoCajaEnum.PagoProveedorCajaAnterior; cajaMovimientoAnterior.ComprobanteId = compraNueva.Id; cajaMovimientoAnterior.Importe = tarjeta+deposito+cheque+efectivoCajaAnterior+transferencia; cajaMovimientoAnterior.ImpFac = (decimal?)ucTotalesCompraSeña1.SubTotal; cajaMovimientoAnterior.FechaAlta = _clock.Now; cajaMovimientoAnterior.FechaModificacion = _clock.Now; cajaMovimientoAnterior.PcAlta = System.Environment.MachineName; cajaMovimientoAnterior.OperadorAltaId = Context.OperadorActual.Id; cajaMovimientoAnterior.SucursalAltaId = Context.SucursalActual.Id; cajaMovimientoAnterior.OperadorModificacionId = Context.OperadorActual.Id; cajaMovimientoAnterior.SucursalModificacionId = Context.SucursalActual.Id; cajaMovimientoAnterior.TipoComprobante = ucTipoCompra.TipoComprobanteSeleccionado; // TipoComprobanteEnum.FacCpraContado; cajaMovimientoAnterior.Efectivo = efectivoCajaAnterior; cajaMovimientoAnterior.Tarjeta = tarjeta; cajaMovimientoAnterior.Deposito = deposito; cajaMovimientoAnterior.Cheque = cheque; cajaMovimientoAnterior.Transferencia = transferencia; cajaMovimientoAnterior.Senia = _seña + _credito + _egreso; //if (_seña > 0) //{ // cajaMovimientoAnterior.Senia = _seña; //} Uow.CajaMovimientos.Agregar(cajaMovimientoAnterior); //Guardamos el movimiento del depósito foreach (var pago in ucTotalesCompraSeña1.Pagos) { switch (pago.TipoPago) { case FormaPago.Cheque: // HACER ALGO break; case FormaPago.Deposito: var pagoDeposito = pago as VentaPagoDeposito; CuentasMovimiento cuentasMovimiento = new CuentasMovimiento(); cuentasMovimiento.CuentaId = pagoDeposito.CuentaId ?? 0; cuentasMovimiento.TipoMovimientoId = 1;//Deposito a proveedor cuentasMovimiento.FechaMovimiento = pagoDeposito.Fecha; cuentasMovimiento.EstadoMovimientoCuentaId = 0; cuentasMovimiento.TipoComprobanteId = ucTipoCompra.TipoComprobanteSeleccionado; cuentasMovimiento.ComprobanteId = compraNueva.Id; cuentasMovimiento.MonedaId = 0; cuentasMovimiento.NroMovimiento = pagoDeposito.Numero; cuentasMovimiento.Descripcion = "DEPOSITO NRO " + pagoDeposito.Numero.ToString(); cuentasMovimiento.FechaCobro = _clock.Now; cuentasMovimiento.Debito = pago.Importe; cuentasMovimiento.Credito = 0; cuentasMovimiento.TipoCarga = 1; cuentasMovimiento.CajaId = caja.Id; cuentasMovimiento.FechaAlta = _clock.Now; cuentasMovimiento.OperadorAltaId = Context.OperadorActual.Id; cuentasMovimiento.SucursalAltaId = Context.SucursalActual.Id; Uow.CuentasMovimientos.Agregar(cuentasMovimiento); break; case FormaPago.Transferencia: var pagoTransferencia = pago as VentaPagoTransferencia; CuentasMovimiento cuentasMovimientoTransferecia = new CuentasMovimiento(); cuentasMovimientoTransferecia.CuentaId = pagoTransferencia.CuentaId ?? 0; cuentasMovimientoTransferecia.TipoMovimientoId = 1;//Deposito a proveedor cuentasMovimientoTransferecia.FechaMovimiento = pagoTransferencia.Fecha; cuentasMovimientoTransferecia.EstadoMovimientoCuentaId = 0; cuentasMovimientoTransferecia.TipoComprobanteId = ucTipoCompra.TipoComprobanteSeleccionado; cuentasMovimientoTransferecia.ComprobanteId = compraNueva.Id; cuentasMovimientoTransferecia.MonedaId = 0; cuentasMovimientoTransferecia.NroMovimiento = pagoTransferencia.Numero; cuentasMovimientoTransferecia.Descripcion = "TRANSFERENCIA NRO " + pagoTransferencia.Numero.ToString(); cuentasMovimientoTransferecia.FechaCobro = _clock.Now; cuentasMovimientoTransferecia.Debito = pago.Importe; cuentasMovimientoTransferecia.Credito = 0; cuentasMovimientoTransferecia.TipoCarga = 1; cuentasMovimientoTransferecia.CajaId = caja.Id; cuentasMovimientoTransferecia.FechaAlta = _clock.Now; cuentasMovimientoTransferecia.OperadorAltaId = Context.OperadorActual.Id; cuentasMovimientoTransferecia.SucursalAltaId = Context.SucursalActual.Id; Uow.CuentasMovimientos.Agregar(cuentasMovimientoTransferecia); break; } } } ////////////////////////////////////////////////////////////////////////////// cajaMovimiento.PcAlta = System.Environment.MachineName; cajaMovimiento.FechaAlta = _clock.Now; cajaMovimiento.OperadorAltaId = Context.OperadorActual.Id; cajaMovimiento.SucursalAltaId = Context.SucursalActual.Id; Uow.CajaMovimientos.Agregar(cajaMovimiento); } #endregion Uow.Commit(); _messageBoxDisplayService.ShowSuccess(Resources.MessageSuccessCompraExitosa); OnCompraRealizada(); }
public void CrearSeniaProveedor(ProveedorSenia senia, IList<VentaPago> pagos, Caja caja, Guid operadorId, int sucursalId) { using (var uow = UowFactory.Create<ILaPazUow>()) { decimal? efectivo = 0; decimal? efectivoCajaAnterior = 0; decimal? tarjeta = 0; decimal? cheque = 0; decimal? deposito = 0; decimal? transferencia = 0; foreach (var pago in pagos) { switch (pago.TipoPago) { case FormaPago.Efectivo: efectivo += pago.Importe; break; case FormaPago.EfectivoCajaAnterior: efectivoCajaAnterior += pago.Importe; break; case FormaPago.Tarjeta: tarjeta += pago.Importe; break; case FormaPago.Cheque: cheque += pago.Importe; break; case FormaPago.Deposito: deposito += pago.Importe; break; case FormaPago.Transferencia: transferencia += pago.Importe; break; } } if (efectivo > 0) { //creo la caja movimiento para los pagos en efectivo que tocan la caja actual CajaMovimiento cajaMovimiento = new CajaMovimiento(); cajaMovimiento.Id = Guid.NewGuid(); cajaMovimiento.CajaId = caja.Id; cajaMovimiento.TipoComprobante = TipoComprobanteEnum.SeñaProveedor; cajaMovimiento.TipoMovimientoCajaId = TipoMovimientoCajaEnum.SeñaProveedor; cajaMovimiento.ComprobanteId = senia.Id; cajaMovimiento.Importe = efectivo; cajaMovimiento.ImpFac = efectivo; cajaMovimiento.FechaAlta = _clock.Now; cajaMovimiento.FechaModificacion = _clock.Now; cajaMovimiento.PcAlta = System.Environment.MachineName; cajaMovimiento.OperadorAltaId = operadorId; cajaMovimiento.SucursalAltaId = sucursalId; cajaMovimiento.OperadorModificacionId = operadorId; cajaMovimiento.SucursalModificacionId = sucursalId; //descontar de la caja if (caja.Egresos == null) caja.Egresos = 0; caja.Egresos += (float?)efectivo; if (caja.Saldo == null) caja.Saldo = 0; caja.Saldo -= (float?)efectivo; caja.FechaModificacion = _clock.Now; caja.SucursalModificacionId = sucursalId;//Sucursal del operador caja.OperadorModificacionId = (operadorId);//Id el operador //traer la caja if (cajaMovimiento.Efectivo == null) cajaMovimiento.Efectivo = 0; cajaMovimiento.Efectivo = efectivo; uow.CajaMovimientos.Agregar(cajaMovimiento); } if (tarjeta > 0 || deposito > 0 || cheque > 0 || efectivoCajaAnterior > 0 || transferencia > 0) { //creo la caja movimiento para los pagos en efectivo que tocan la caja actual CajaMovimiento cajaMovimientoAnterior = new CajaMovimiento(); cajaMovimientoAnterior.Id = Guid.NewGuid(); cajaMovimientoAnterior.CajaId = caja.Id; cajaMovimientoAnterior.TipoComprobante = TipoComprobanteEnum.SeñaProveedor; cajaMovimientoAnterior.TipoMovimientoCajaId = TipoMovimientoCajaEnum.SeñaProveedorCajaAnterior; cajaMovimientoAnterior.ComprobanteId = senia.Id; cajaMovimientoAnterior.Importe = tarjeta + deposito + cheque + efectivoCajaAnterior + transferencia; cajaMovimientoAnterior.ImpFac = tarjeta + deposito + cheque + efectivoCajaAnterior + transferencia; cajaMovimientoAnterior.FechaAlta = _clock.Now; cajaMovimientoAnterior.FechaModificacion = _clock.Now; cajaMovimientoAnterior.PcAlta = System.Environment.MachineName; cajaMovimientoAnterior.OperadorAltaId = operadorId; cajaMovimientoAnterior.SucursalAltaId = sucursalId; cajaMovimientoAnterior.OperadorModificacionId = operadorId; cajaMovimientoAnterior.SucursalModificacionId = sucursalId; if (efectivoCajaAnterior > 0) { if (cajaMovimientoAnterior.Efectivo == null) cajaMovimientoAnterior.Efectivo = 0; cajaMovimientoAnterior.Efectivo += efectivoCajaAnterior; if (caja.Saldo == null) caja.Saldo = 0; caja.Saldo -= (float?)efectivo; } if (tarjeta > 0) { if (cajaMovimientoAnterior.Tarjeta == null) cajaMovimientoAnterior.Tarjeta = 0; cajaMovimientoAnterior.Tarjeta += tarjeta; } if (cheque > 0) { if (cajaMovimientoAnterior.Cheque == null) cajaMovimientoAnterior.Cheque = 0; cajaMovimientoAnterior.Cheque += cheque; } if (deposito > 0) { if (cajaMovimientoAnterior.Deposito == null) cajaMovimientoAnterior.Deposito = 0; cajaMovimientoAnterior.Deposito += deposito; } if (transferencia > 0) { if (cajaMovimientoAnterior.Transferencia == null) cajaMovimientoAnterior.Transferencia = 0; cajaMovimientoAnterior.Transferencia += transferencia; } uow.CajaMovimientos.Agregar(cajaMovimientoAnterior); } //Guardamos el movimiento del depósito foreach (var pago in pagos) { switch (pago.TipoPago) { case FormaPago.Cheque: // HACER ALGO break; case FormaPago.Deposito: var pagoDeposito = pago as VentaPagoDeposito; CuentasMovimiento cuentasMovimiento = new CuentasMovimiento(); cuentasMovimiento.CuentaId = pagoDeposito.CuentaId ?? 0; cuentasMovimiento.TipoMovimientoId = 1;//Deposito a proveedor cuentasMovimiento.FechaMovimiento = pagoDeposito.Fecha; cuentasMovimiento.EstadoMovimientoCuentaId = 0; cuentasMovimiento.TipoComprobanteId = TipoComprobanteEnum.SeñaProveedor; cuentasMovimiento.ComprobanteId = senia.Id; cuentasMovimiento.MonedaId = 0; cuentasMovimiento.NroMovimiento = pagoDeposito.Numero; cuentasMovimiento.Descripcion = "DEPOSITO SEÑA NRO " + pagoDeposito.Numero.ToString(); cuentasMovimiento.FechaCobro = _clock.Now; cuentasMovimiento.Debito = pago.Importe; cuentasMovimiento.Credito = 0; cuentasMovimiento.TipoCarga = 1; cuentasMovimiento.CajaId = caja.Id; cuentasMovimiento.FechaAlta = _clock.Now; cuentasMovimiento.OperadorAltaId = operadorId; cuentasMovimiento.SucursalAltaId = sucursalId; uow.CuentasMovimientos.Agregar(cuentasMovimiento); break; case FormaPago.Transferencia: var pagoTransferencia = pago as VentaPagoTransferencia; CuentasMovimiento cuentasMovimientoTransferecia = new CuentasMovimiento(); cuentasMovimientoTransferecia.CuentaId = pagoTransferencia.CuentaId ?? 0; cuentasMovimientoTransferecia.TipoMovimientoId = 1;//Deposito a proveedor cuentasMovimientoTransferecia.FechaMovimiento = pagoTransferencia.Fecha; cuentasMovimientoTransferecia.EstadoMovimientoCuentaId = 0; cuentasMovimientoTransferecia.TipoComprobanteId = TipoComprobanteEnum.SeñaProveedor; cuentasMovimientoTransferecia.ComprobanteId = senia.Id; cuentasMovimientoTransferecia.MonedaId = 0; cuentasMovimientoTransferecia.NroMovimiento = pagoTransferencia.Numero; cuentasMovimientoTransferecia.Descripcion = "TRANSFERENCIA SEÑA NRO " + pagoTransferencia.Numero.ToString(); cuentasMovimientoTransferecia.FechaCobro = _clock.Now; cuentasMovimientoTransferecia.Debito = pago.Importe; cuentasMovimientoTransferecia.Credito = 0; cuentasMovimientoTransferecia.TipoCarga = 1; cuentasMovimientoTransferecia.CajaId = caja.Id; cuentasMovimientoTransferecia.FechaAlta = _clock.Now; cuentasMovimientoTransferecia.OperadorAltaId = operadorId; cuentasMovimientoTransferecia.SucursalAltaId = sucursalId; uow.CuentasMovimientos.Agregar(cuentasMovimientoTransferecia); break; } } uow.Cajas.Modificar(caja); uow.ProveedoresSenias.Agregar(senia); uow.Commit(); } }
private void ProcesarPagoDeposito(VentaDataBase ventaData, VentaPago pago, CajaMovimiento cajaMovimiento, Venta venta, Caja caja) { var pagoDeposito = pago as VentaPagoDeposito; if (cajaMovimiento.Deposito == null) cajaMovimiento.Deposito = 0; //Guardar Cuentas Movimientos cajaMovimiento.Deposito += pago.Importe; CuentasMovimiento cuentasMovimiento = new CuentasMovimiento(); cuentasMovimiento.CuentaId = pagoDeposito.CuentaId ?? 0; cuentasMovimiento.TipoMovimientoId = 2; //Deposito cuentasMovimiento.FechaMovimiento = pagoDeposito.Fecha; cuentasMovimiento.EstadoMovimientoCuentaId = 0; cuentasMovimiento.TipoComprobanteId = ventaData.TipoComprobanteSeleccionado; cuentasMovimiento.ComprobanteId = venta.Id; cuentasMovimiento.MonedaId = 0; cuentasMovimiento.CondicionVentaId = ventaData.CondicionVentaSeleccionada; cuentasMovimiento.NroMovimiento = pagoDeposito.Numero; cuentasMovimiento.Descripcion = "DEPOSITO NRO " + pagoDeposito.Numero.ToString(); cuentasMovimiento.FechaCobro = _clock.Now; cuentasMovimiento.Debito = 0; cuentasMovimiento.Credito = pago.Importe; cuentasMovimiento.TipoCarga = 2; cuentasMovimiento.CajaId = caja.Id; cuentasMovimiento.FechaAlta = _clock.Now; cuentasMovimiento.OperadorAltaId = ventaData.OperadorId; cuentasMovimiento.SucursalAltaId = ventaData.SucursalId; Uow.CuentasMovimientos.Agregar(cuentasMovimiento); }