public FrmCrearVenta(IClock clock,
                             IFormFactory formFactory,
                             IMessageBoxDisplayService messageBoxDisplayService,
                             IVentaNegocio ventaNegocio,
                             IClienteNegocio clienteNegocio,
                             IFormRegistry formRegistry, 
                             DirectPrint directPrint,
                             int id, 
                             ActionFormMode mode)
        {
            FormFactory = formFactory;
            FormRegistry = formRegistry;

            _clock = clock;
            _messageBoxDisplayService = messageBoxDisplayService;
            _ventaNegocio = ventaNegocio;
            _clienteNegocio = clienteNegocio;
            _directPrint = directPrint;
            _id = id;
            _formMode = mode;

            InitializeComponent();
            InicializarForm(mode);
        }
        private void RealizarVenta()
        {
            RendirConsignacionClienteData consignacionData = new RendirConsignacionClienteData();

            consignacionData.EsVentaReservada = _formMode == ActionFormMode.Edit;
            consignacionData.OperadorId = Context.OperadorActual.Id;
            consignacionData.SucursalId = Context.SucursalActual.Id;
            consignacionData.NumeroComprobante = _id;
            consignacionData.ClienteId = _cliente.Id;

            consignacionData.TipoComprobanteSeleccionado = UcBuscadorConsignacion.TipoComprobanteSeleccionado;
            consignacionData.CondicionVentaSeleccionada = UcBuscadorConsignacion.CondicionVentaSeleccionada;
            consignacionData.TipoCajaMovimientoSeleccionado = UcBuscadorConsignacion.TipoCajaMovimientoSeleccionado;

            consignacionData.TotalPagar = UcTotalesVenta.TotalPagar;
            consignacionData.Senas = UcTotalesVenta.Senas;
            consignacionData.CreditosDevolucion = UcTotalesVenta.CreditosDevolucion;

            UcTitulosConsignacionVenta.ActualizarInfo();
            consignacionData.RemitosVentaDetalle = UcTitulosConsignacionVenta.Titulos;

            consignacionData.CajaActualId = Context.CajaActual.Id;
            consignacionData.Anticipo = UcCuentaCorrienteInfo.Anticipo;
            //consignacionData.SubTotal = UcCuentaCorrienteInfo.SubTotal;
            consignacionData.SubTotal = UcTotalesVenta.SubTotal;

            consignacionData.Pagos = UcTotalesVenta.Pagos;
            consignacionData.Cuotas = UcCuentaCorrienteInfo.Cuotas;
            consignacionData.Montocuota = UcCuentaCorrienteInfo.Montocuota;
            consignacionData.VencimientoCuota = UcCuentaCorrienteInfo.Vencimiento;
            consignacionData.PcAlta = Environment.MachineName;
            consignacionData.PuntoVenta = Context.SucursalActual.SucursalNumero ?? 1;

            CrearVentaResponse ventaResponse;

            try
            {
                ventaResponse = _ventaNegocio.CrearVentaRendicionConsignacionCliente(consignacionData);
            }
            catch (ApplicationException ex)
            {
                _messageBoxDisplayService.ShowError(ex.Message);
                return;
            }

            //if (ventaResponse.Comprobantes.Count != 0)
            //{
                foreach (var comprobante in ventaResponse.Comprobantes)
                {
                    using (var crearComprobante = FormFactory.Create<FrmComprobante>())
                    {
                        crearComprobante._concepto = comprobante.Concepto;
                        crearComprobante._LCN = comprobante.LCN;
                        var conv = new Conversion();
                        crearComprobante._montoTexto = conv.enletras((comprobante.Importe - comprobante.ImpOcupado).ToString());
                        crearComprobante._montoActualizado = (comprobante.Importe - comprobante.ImpOcupado);
                        crearComprobante.ShowDialog();
                    }
                }

              //  _messageBoxDisplayService.ShowSuccess(Resources.MessageSuccessVentaExitosa);

                if (ChkImprimir.Checked)
                {
                    DirectPrint print = new DirectPrint(Uow);
                    print.Descripcion = ventaResponse.FacturaInfo.Descripcion;
                    print.FormaPago = ventaResponse.FacturaInfo.FormaPago;
                    print.Recargo = UcTotalesVenta.Recargo.ToString();
                    print.GenerarFactura(ventaResponse.VentaId);
                }

                using (var crearVenta = FormFactory.Create<FrmFacturaVenta>(ventaResponse.VentaId))
                {
                    if (ventaResponse.VentaId!=Guid.Empty)
                    {
                        crearVenta._descripcion = ventaResponse.FacturaInfo.Descripcion;
                        crearVenta._formaPago = ventaResponse.FacturaInfo.FormaPago;
                        crearVenta._recargo = UcTotalesVenta.Recargo.ToString();

                        crearVenta.ShowDialog();   
                    }

                    
                }

                OnVentaRealizada();
            //}
            //else
            //{
                _messageBoxDisplayService.ShowSuccess("Rendición guardada con éxito");
            //}

            var pageTab = this.Parent as RadPageViewPage;
            if (pageTab != null)
            {
                pageTab.Dispose();
            };

            if (_formMode == ActionFormMode.Edit)
            {
                this.Close();
            }
        }