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(); }
private void MigracionStockFuturoJournal(bool propio, Guid? proveedorId) { _tituloseleccionado = (TituloDto)GridTitulos.CurrentRow.DataBoundItem; var tituloStock = Uow.TitulosStock.Obtener(t => t.TituloId == _tituloseleccionado.Id && t.SucursalId == Context.SucursalActual.Id); var migracionTituloStock = _migracionRepo.Obtener(t => t.TituloId == _tituloseleccionado.Id && t.SucursalId == Context.SucursalActual.Id); //LAPAZ Guid? _idProveedor = proveedorId; var provFuturoOJournal = Uow.Proveedores.Obtener(p => p.Id == _idProveedor); //si el titulo stock no existe lo doy de alta if (tituloStock == null) { tituloStock = new TituloStock(); tituloStock.TituloId = _tituloseleccionado.Id; tituloStock.SucursalId = Context.SucursalActual.Id; tituloStock.StkCn = 0; tituloStock.StkPr = 0; tituloStock.FechaAlta = _clock.Now; tituloStock.SucursalAltaId = Context.SucursalActual.Id; tituloStock.OperadorAltaId = Context.OperadorActual.Id; Uow.TitulosStock.Agregar(tituloStock); Uow.Commit(); tituloStock = Uow.TitulosStock.Obtener(t => t.TituloId == _tituloseleccionado.Id && t.SucursalId == Context.SucursalActual.Id); } DateTime fechaCompra = DateTime.Parse("2015-01-01"); var compraLists = Uow.Compras.Listado().Where(p => p.ProveedorId == provFuturoOJournal.Id && p.FechaAlta > fechaCompra).OrderBy(p => p.FechaAlta).ToList(); Compra compraList; if (compraLists.Count > 0) compraList = compraLists.First(); else compraList = null; var compras = new Compra(); if (compraList == null) { compras = new Compra(); compras.Id = Guid.NewGuid(); compras.LCN = "0000000000000"; compras.TipoComprobanteId = TipoComprobanteEnum.RemitosConsignacProveedor; compras.ProveedorId = provFuturoOJournal.Id; compras.LetraComprobante = "X"; compras.PuntoVenta = Context.SucursalActual.Id; compras.NumeroComprobante = "0000000000000"; compras.FechaComprobante = _clock.Now; compras.Concepto = "REMITO POR CONSIGNACION PROVEEDOR"; compras.ImporteNeto = 0; compras.ImporteIVA = 0; compras.EstadoCompraId = 1; compras.OperadorAltaId = Context.OperadorActual.Id; compras.SucursalAltaId = Context.SucursalActual.Id; compras.FechaAlta = _clock.Now; Uow.Compras.Agregar(compras); } else { //compraList = Uow.Compras.Listado().Where(p => p.ProveedorId == provFuturoOJournal.Id).OrderBy(p => p.FechaAlta).First(); compras = Uow.Compras.Obtener(c => c.Id == compraList.Id); } var compraDetalle = new ComprasDetalle(); compraDetalle.Id = Guid.NewGuid(); compraDetalle.CompraId = compras.Id; compraDetalle.TituloId = _tituloseleccionado.Id; compraDetalle.PrecioCompra = 0; 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; //Si propio es true descontamos e incrementamos los propios, si no consignados if (propio) { //Descuento 1 libro migracionTituloStock.StkPr -= 1; tituloStock.StkPr += 1; //Modifico las propiedades CantidadPropia = tituloStock.StkPr; MigracionCantidadPropia = migracionTituloStock.StkPr; //Agrego en compra detalle compraDetalle.CntPr = 1; //Comiteo los cambios a la base _migracionRepo.Modificar(migracionTituloStock); _migracionRepo.Commit(); } else { //Descuento 1 libro migracionTituloStock.StkCn -= 1; tituloStock.StkCn += 1; //Modifico las propiedades CantidadConsignada = tituloStock.StkCn; MigracionCantidadConsignada = migracionTituloStock.StkCn; //Agrego en compra detalle compraDetalle.CntCn = 1; //Agrego la consignacion TitulosConsignacion consignacion = new TitulosConsignacion(); consignacion.Id = Guid.NewGuid(); consignacion.TituloId = _tituloseleccionado.Id; consignacion.ClienteId = Guid.Empty; consignacion.ProveedorId = provFuturoOJournal.Id; consignacion.TipoConsignacion = 1; consignacion.CntPr = 0; consignacion.CntCn = 1; consignacion.CntVn = 0; consignacion.FechaAlta = _clock.Now; consignacion.SucursalAltaId = Context.SucursalActual.Id; consignacion.OperadorAltaId = Context.OperadorActual.Id; Uow.TitulosConsignaciones.Agregar(consignacion); //Comiteo los cambios a la base _migracionRepo.Modificar(migracionTituloStock); _migracionRepo.Commit(); } tituloStock.FechaModificacion = _clock.Now; tituloStock.OperadorModificacionId = Context.OperadorActual.Id; Uow.ComprasDetalles.Agregar(compraDetalle); Uow.TitulosStock.Modificar(tituloStock); Uow.Commit(); }