Beispiel #1
0
        public override Lfx.Types.OperationResult Ok()
        {
            Lfx.Types.OperationResult Res = new Lfx.Types.SuccessOperationResult();
            if (EntradaCajaDestino.ValueInt <= 0)
            {
                Res.Success  = false;
                Res.Message += "Por favor seleccione la cuenta de destino." + Environment.NewLine;
            }
            if (EntradaTotal.ValueDecimal <= 0)
            {
                Res.Success  = false;
                Res.Message += "El importe total debe ser mayor o igual a cero." + Environment.NewLine;
            }
            if (Res.Success == true)
            {
                decimal GestionDeCobro = Lfx.Types.Parsing.ParseCurrency(EntradaGestionDeCobro.Text);
                decimal Impuestos      = Lfx.Types.Parsing.ParseCurrency(EntradaImpuestos.Text);

                IDbTransaction Trans = this.Connection.BeginTransaction(IsolationLevel.Serializable);

                Lbl.Cajas.Caja CajaDestino = EntradaCajaDestino.Elemento as Lbl.Cajas.Caja;
                this.Cheque.Efectivizar(CajaDestino, GestionDeCobro, Impuestos);

                Trans.Commit();
            }
            return(Res);
        }
Beispiel #2
0
        public override Lfx.Types.OperationResult ValidarControl()
        {
            Lfx.Types.OperationResult validarReturn = new Lfx.Types.SuccessOperationResult();

            if (EntradaMoneda.ValueInt == 0)
            {
                validarReturn.Success  = false;
                validarReturn.Message += "Seleccione la Currency." + Environment.NewLine;
            }

            if (EntradaNombre.Text.Length < 2)
            {
                validarReturn.Success  = false;
                validarReturn.Message += "Seleccione el Nombre de la cuenta." + Environment.NewLine;
            }

            switch (Lbl.Sys.Config.Pais.ClaveBancaria.Nombre)
            {
            case "CBU":
                if (EntradaClaveBancaria.Text.Length > 0 && Lbl.Bancos.Claves.Cbu.EsValido(EntradaClaveBancaria.Text) == false)
                {
                    validarReturn.Success  = false;
                    validarReturn.Message += "La CBU es incorrecta." + Environment.NewLine;
                }
                break;
            }

            return(validarReturn);
        }
Beispiel #3
0
                public override Lfx.Types.OperationResult ValidarControl()
                {
                        Lfx.Types.OperationResult validarReturn = new Lfx.Types.SuccessOperationResult();

                        if (EntradaMoneda.ValueInt == 0) {
                                validarReturn.Success = false;
                                validarReturn.Message += "Seleccione la Currency." + Environment.NewLine;
                        }

                        if (EntradaNombre.Text.Length < 2) {
                                validarReturn.Success = false;
                                validarReturn.Message += "Seleccione el Nombre de la cuenta." + Environment.NewLine;
                        }

                        switch(Lbl.Sys.Config.Pais.ClaveBancaria.Nombre)
                        {
                                case "CBU":
                                        if (EntradaClaveBancaria.Text.Length > 0 && Lbl.Bancos.Claves.Cbu.EsValido(EntradaClaveBancaria.Text) == false) {
                                                validarReturn.Success = false;
                                                validarReturn.Message += "La CBU es incorrecta." + Environment.NewLine;
                                        }
                                        break;
                        }

                        return validarReturn;
                }
Beispiel #4
0
        public override Lfx.Types.OperationResult ValidarControl()
        {
            Lfx.Types.OperationResult Res = new Lfx.Types.SuccessOperationResult();

            if (EntradaNombre.Text.Length < 2)
            {
                Res.Success  = false;
                Res.Message += "Por favor escriba el nombre del artículo." + Environment.NewLine;
            }

            if (EntradaCodigo1.Text.Length > 0)
            {
                Lfx.Data.Row Articulo = this.Connection.FirstRowFromSelect("SELECT id_articulo FROM articulos WHERE codigo1='" + EntradaCodigo1.Text + "' AND id_articulo<>" + this.Elemento.Id.ToString());

                if (Articulo != null)
                {
                    Res.Success  = false;
                    Res.Message += "Ya existe un artículo con el mismo código (" + EtiquetaCodigo1.Text + " " + EntradaCodigo1.Text + ") en la base de datos." + Environment.NewLine;
                }
            }

            if (EntradaCodigo2.Text.Length > 0)
            {
                Lfx.Data.Row Articulo = this.Connection.FirstRowFromSelect("SELECT id_articulo FROM articulos WHERE codigo2='" + EntradaCodigo2.Text + "' AND id_articulo<>" + this.Elemento.Id.ToString());

                if (Articulo != null)
                {
                    Res.Success  = false;
                    Res.Message += "Ya existe un artículo con el mismo código (" + EtiquetaCodigo2.Text + " " + EntradaCodigo2.Text + ") en la base de datos." + Environment.NewLine;
                }
            }

            if (EntradaCodigo3.Text.Length > 0)
            {
                Lfx.Data.Row Articulo = this.Connection.FirstRowFromSelect("SELECT id_articulo FROM articulos WHERE codigo3='" + EntradaCodigo3.Text + "' AND id_articulo<>" + this.Elemento.Id.ToString());

                if (Articulo != null)
                {
                    Res.Success  = false;
                    Res.Message += "Ya existe un artículo con el mismo código (" + EtiquetaCodigo3.Text + " " + EntradaCodigo3.Text + ") en la base de datos." + Environment.NewLine;
                }
            }

            if (EntradaCodigo4.Text.Length > 0)
            {
                Lfx.Data.Row Articulo = this.Connection.FirstRowFromSelect("SELECT id_articulo FROM articulos WHERE codigo4='" + EntradaCodigo4.Text + "' AND id_articulo<>" + this.Elemento.Id.ToString());

                if (Articulo != null)
                {
                    Res.Success  = false;
                    Res.Message += "Ya existe un artículo con el mismo código (" + EtiquetaCodigo4.Text + " " + EntradaCodigo4.Text + ") en la base de datos." + Environment.NewLine;
                }
            }

            return(Res);
        }
Beispiel #5
0
        public override Lfx.Types.OperationResult Ok()
        {
            Lfx.Types.OperationResult Res = new Lfx.Types.SuccessOperationResult();
            Res.Success = true;

            if (Lfx.Types.Parsing.ParseCurrency(EntradaImporte.Text) <= 0)
            {
                Res.Success  = false;
                Res.Message += "Debe escribir el importe." + Environment.NewLine;
            }

            if (EntradaCaja.ValueInt == 0)
            {
                Res.Success  = false;
                Res.Message += "Debe seleccionar la caja." + Environment.NewLine;
            }

            if (EntradaConcepto.ValueInt == 0)
            {
                Res.Success  = false;
                Res.Message += "Debe seleccionar el concepto." + Environment.NewLine;
            }

            if (Res.Success == true)
            {
                using (IDbTransaction Trans = this.Caja.Connection.BeginTransaction()) {
                    if (m_Ingreso)
                    {
                        this.Caja.Movimiento(false,
                                             EntradaConcepto.Elemento as Lbl.Cajas.Concepto,
                                             EntradaConcepto.TextDetail,
                                             EntradaPersona.Elemento as Lbl.Personas.Persona,
                                             EntradaImporte.ValueDecimal,
                                             EntradaObs.Text,
                                             null,
                                             null,
                                             EntradaComprobante.Text);
                    }
                    else
                    {
                        this.Caja.Movimiento(false,
                                             EntradaConcepto.Elemento as Lbl.Cajas.Concepto,
                                             EntradaConcepto.TextDetail,
                                             EntradaPersona.Elemento as Lbl.Personas.Persona,
                                             -EntradaImporte.ValueDecimal,
                                             EntradaObs.Text,
                                             null,
                                             null,
                                             EntradaComprobante.Text);
                    }
                    Trans.Commit();
                }
            }
            return(Res);
        }
Beispiel #6
0
        public override Lfx.Types.OperationResult Ok()
        {
            Lbl.Articulos.Articulo    Art = EntradaArticulo.Elemento as Lbl.Articulos.Articulo;
            Lfx.Types.OperationResult Res = new Lfx.Types.SuccessOperationResult();

            if (Art == null)
            {
                Res.Message += "Por favor seleccione un artículo." + Environment.NewLine;
                Res.Success  = false;
            }

            if (EntradaDesdeSituacion.ValueInt != EntradaDesdeSituacion.ValueInt)
            {
                Res.Message += @"Por favor indique ""Desde"" y ""Hacia""." + Environment.NewLine;
                Res.Success  = false;
            }

            if (EntradaCantidad.ValueDecimal <= 0)
            {
                Res.Message += "Por favor escriba la cantidad." + Environment.NewLine;
                Res.Success  = false;
            }

            if (Res.Success)
            {
                if (Art != null && Art.ObtenerSeguimiento() != Lbl.Articulos.Seguimientos.Ninguno)
                {
                    if (EntradaArticulo.DatosSeguimiento == null || EntradaArticulo.DatosSeguimiento.Count == 0)
                    {
                        return(new Lfx.Types.FailureOperationResult("Debe ingresar los datos de seguimiento (Ctrl-S) del artículo '" + Art.Nombre + "' para poder realizar movimientos de stock."));
                    }
                    else
                    {
                        if (EntradaArticulo.DatosSeguimiento.CantidadTotal < EntradaArticulo.Cantidad)
                        {
                            return(new Lfx.Types.FailureOperationResult("Debe ingresar los datos de seguimiento (Ctrl-S) de todos los artículos '" + Art.Nombre + "' para poder realizar movimientos de stock."));
                        }
                    }
                }
            }


            if (Res.Success)
            {
                IDbTransaction          Trans = this.Connection.BeginTransaction(IsolationLevel.Serializable);
                decimal                 Cantidad = EntradaCantidad.ValueDecimal;
                Lbl.Articulos.Situacion Origen, Destino;
                Origen  = EntradaDesdeSituacion.Elemento as Lbl.Articulos.Situacion;
                Destino = EntradaHaciaSituacion.Elemento as Lbl.Articulos.Situacion;
                Art.MoverExistencias(null, Cantidad, EntradaObs.Text, Origen, Destino, EntradaArticulo.DatosSeguimiento);
                Trans.Commit();
            }

            return(Res);
        }
Beispiel #7
0
        public override Lfx.Types.OperationResult Ok()
        {
            Lfx.Types.OperationResult aceptarReturn = new Lfx.Types.SuccessOperationResult();

            if (CajaOrigen == null)
            {
                aceptarReturn.Success  = false;
                aceptarReturn.Message += "Debe especificar la Caja de Origen." + Environment.NewLine;
            }
            if (CajaDestino == null)
            {
                aceptarReturn.Success  = false;
                aceptarReturn.Message += "Debe especificar la Caja de Destino." + Environment.NewLine;
            }
            if (EntradaImporte.ValueDecimal <= 0)
            {
                aceptarReturn.Success  = false;
                aceptarReturn.Message += "Debe especificar el importe." + Environment.NewLine;
            }
            if (EntradaConcepto.ValueInt == 0)
            {
                aceptarReturn.Success  = false;
                aceptarReturn.Message += "Debe especificar el Concepto." + Environment.NewLine;
            }

            if (aceptarReturn.Success == true)
            {
                decimal Importe = EntradaImporte.ValueDecimal;
                CajaOrigen.Connection  = this.Connection;
                CajaDestino.Connection = this.Connection;
                IDbTransaction Trans = this.Connection.BeginTransaction(IsolationLevel.Serializable);
                CajaOrigen.Movimiento(false, EntradaConcepto.Elemento as Lbl.Cajas.Concepto,
                                      EntradaConcepto.TextDetail,
                                      Lbl.Sys.Config.Actual.UsuarioConectado.Persona,
                                      -Importe,
                                      EntradaObs.Text, null, null, EntradaComprob.Text);
                if (EntradaImporteDestino.Visible)
                {
                    Importe = EntradaImporteDestino.ValueDecimal;
                }
                CajaDestino.Movimiento(false,
                                       EntradaConcepto.Elemento as Lbl.Cajas.Concepto,
                                       EntradaConcepto.TextDetail,
                                       Lbl.Sys.Config.Actual.UsuarioConectado.Persona,
                                       Importe,
                                       EntradaObs.Text, null, null, EntradaComprob.Text);
                Trans.Commit();
            }
            return(aceptarReturn);
        }
Beispiel #8
0
        public override Lfx.Types.OperationResult Ok()
        {
            Lfx.Types.OperationResult Res = new Lfx.Types.SuccessOperationResult();
            if (EntradaCajaOrigen.ValueInt <= 0)
            {
                Res.Success  = false;
                Res.Message += "Por favor seleccione la cuenta de origen." + Environment.NewLine;
            }
            if (EntradaTotal.ValueDecimal <= 0)
            {
                Res.Success  = false;
                Res.Message += "El importe total debe ser mayor o igual a cero." + Environment.NewLine;
            }
            if (Res.Success == true)
            {
                decimal Impuestos = EntradaImpuestos.ValueDecimal;

                IDbTransaction Trans = null;
                if (this.Connection.InTransaction == false)
                {
                    Trans = this.Connection.BeginTransaction(IsolationLevel.Serializable);
                }

                string ChequesNum = null;
                System.Data.DataTable TablaCheques = Connection.Select("SELECT * FROM bancos_cheques WHERE id_cheque IN (" + ChequesIds + ")");
                Lbl.Cajas.Caja        CajaOrigen   = new Lbl.Cajas.Caja(Connection, EntradaCajaOrigen.ValueInt);
                foreach (System.Data.DataRow RowCheque in TablaCheques.Rows)
                {
                    Lbl.Bancos.Cheque Cheque = new Lbl.Bancos.Cheque(this.Connection, (Lfx.Data.Row)RowCheque);
                    Cheque.Pagar(CajaOrigen);
                }

                if (Impuestos != 0)
                {
                    CajaOrigen.Movimiento(true, new Lbl.Cajas.Concepto(this.Connection, 23030),
                                          "Impuestos de cheque(s)",
                                          null,
                                          -Impuestos,
                                          "Cheques Nº " + ChequesNum, null, null, null);
                }

                if (Trans != null)
                {
                    Trans.Commit();
                }
            }
            return(Res);
        }
Beispiel #9
0
        public override Lfx.Types.OperationResult ValidarControl()
        {
            Lfx.Types.OperationResult validarReturn = new Lfx.Types.SuccessOperationResult();
            Lbl.Comprobantes.Recibo   Rec           = this.Elemento as Lbl.Comprobantes.Recibo;

            if (EntradaCliente.ValueInt <= 0 || EntradaCliente.ValueInt == 999)
            {
                validarReturn.Success = false;
                validarReturn.Message = "Por favor seleccione un cliente válido." + Environment.NewLine;
            }

            if (EntradaConcepto.ValueInt <= 0)
            {
                validarReturn.Success = false;
                validarReturn.Message = "Por favor seleccione un concepto para el movimiento." + Environment.NewLine;
            }

            if (this.DePago)
            {
                // Recibo de pago
                if (Rec.Pagos.ImporteTotal <= 0)
                {
                    validarReturn.Success = false;
                    validarReturn.Message = "Debe especificar los valores de pago." + Environment.NewLine;
                }
            }
            else
            {
                // Recibo de cobro
                if (Rec.Cobros.ImporteTotal <= 0)
                {
                    validarReturn.Success = false;
                    validarReturn.Message = "Debe especificar los valores de cobro." + Environment.NewLine;
                }
            }

            if (this.Elemento.Existe == false && EntradaNumero.Text.ParseInt() != 0)
            {
                int bExiste = this.Connection.FieldInt("SELECT COUNT(id_recibo) FROM recibos WHERE estado<90 AND pv=" + EntradaPV.ValueInt.ToString() + " AND numero=" + EntradaNumero.ValueInt.ToString());
                if (bExiste != 0)
                {
                    validarReturn.Success = false;
                    validarReturn.Message = "Ya existe un Recibo con ese número." + Environment.NewLine;
                }
            }
            return(validarReturn);
        }
Beispiel #10
0
                public override Lfx.Types.OperationResult Ok()
                {
                        Lbl.Articulos.Articulo Art = EntradaArticulo.Elemento as Lbl.Articulos.Articulo;
                        Lfx.Types.OperationResult Res = new Lfx.Types.SuccessOperationResult();

                        if (Art == null) {
                                Res.Message += "Por favor seleccione un artículo." + Environment.NewLine;
                                Res.Success = false;
                        }

                        if (EntradaDesdeSituacion.ValueInt != EntradaDesdeSituacion.ValueInt) {
                                Res.Message += @"Por favor indique ""Desde"" y ""Hacia""." + Environment.NewLine;
                                Res.Success = false;
                        }

                        if (EntradaCantidad.ValueDecimal <= 0) {
                                Res.Message += "Por favor escriba la cantidad." + Environment.NewLine;
                                Res.Success = false;
                        }

                        if (Res.Success) {
                                if (Art != null && Art.ObtenerSeguimiento() != Lbl.Articulos.Seguimientos.Ninguno) {
                                        if (EntradaArticulo.DatosSeguimiento == null || EntradaArticulo.DatosSeguimiento.Count == 0) {
                                                return new Lfx.Types.FailureOperationResult("Debe ingresar los datos de seguimiento (Ctrl-S) del artículo '" + Art.Nombre + "' para poder realizar movimientos de stock.");
                                        } else {
                                                if (EntradaArticulo.DatosSeguimiento.CantidadTotal < EntradaArticulo.Cantidad)
                                                        return new Lfx.Types.FailureOperationResult("Debe ingresar los datos de seguimiento (Ctrl-S) de todos los artículos '" + Art.Nombre + "' para poder realizar movimientos de stock.");
                                        }
                                }
                        }


                        if (Res.Success) {
                                IDbTransaction Trans = this.Connection.BeginTransaction(IsolationLevel.Serializable);
                                decimal Cantidad = EntradaCantidad.ValueDecimal;
                                Lbl.Articulos.Situacion Origen, Destino;
                                Origen = EntradaDesdeSituacion.Elemento as Lbl.Articulos.Situacion;
                                Destino = EntradaHaciaSituacion.Elemento as Lbl.Articulos.Situacion;
                                Art.MoverExistencias(null, Cantidad, EntradaObs.Text, Origen, Destino, EntradaArticulo.DatosSeguimiento);
                                Trans.Commit();
                        }

                        return Res;
                }
Beispiel #11
0
                public override Lfx.Types.OperationResult Ok()
                {
                        Lfx.Types.OperationResult aceptarReturn = new Lfx.Types.SuccessOperationResult();

                        if (CajaOrigen == null) {
                                aceptarReturn.Success = false;
                                aceptarReturn.Message += "Debe especificar la Caja de Origen." + Environment.NewLine;
                        }
                        if (CajaDestino == null) {
                                aceptarReturn.Success = false;
                                aceptarReturn.Message += "Debe especificar la Caja de Destino." + Environment.NewLine;
                        }
                        if (EntradaImporte.ValueDecimal <= 0) {
                                aceptarReturn.Success = false;
                                aceptarReturn.Message += "Debe especificar el importe." + Environment.NewLine;
                        }
                        if (EntradaConcepto.ValueInt == 0) {
                                aceptarReturn.Success = false;
                                aceptarReturn.Message += "Debe especificar el Concepto." + Environment.NewLine;
                        }

                        if (aceptarReturn.Success == true) {
                                decimal Importe = EntradaImporte.ValueDecimal;
                                CajaOrigen.Connection = this.Connection;
                                CajaDestino.Connection = this.Connection;
                                IDbTransaction Trans = this.Connection.BeginTransaction(IsolationLevel.Serializable);
                                CajaOrigen.Movimiento(false, EntradaConcepto.Elemento as Lbl.Cajas.Concepto,
                                        EntradaConcepto.TextDetail,
                                        Lbl.Sys.Config.Actual.UsuarioConectado.Persona,
                                        -Importe,
                                        EntradaObs.Text, null, null, EntradaComprob.Text);
                                if (EntradaImporteDestino.Visible)
                                        Importe = EntradaImporteDestino.ValueDecimal;
                                CajaDestino.Movimiento(false,
                                        EntradaConcepto.Elemento as Lbl.Cajas.Concepto,
                                        EntradaConcepto.TextDetail,
                                        Lbl.Sys.Config.Actual.UsuarioConectado.Persona,
                                        Importe,
                                        EntradaObs.Text, null, null, EntradaComprob.Text);
                                Trans.Commit();
                        }
                        return aceptarReturn;
                }
Beispiel #12
0
                public override Lfx.Types.OperationResult Ok()
                {
                        Lfx.Types.OperationResult Res = new Lfx.Types.SuccessOperationResult();
                        if (EntradaCajaDestino.ValueInt <= 0) {
                                Res.Success = false;
                                Res.Message += "Por favor seleccione la cuenta de destino." + Environment.NewLine;
                        }
                        if (EntradaTotal.ValueDecimal <= 0) {
                                Res.Success = false;
                                Res.Message += "El importe total debe ser mayor o igual a cero." + Environment.NewLine;
                        }
                        if (Res.Success == true) {
                                decimal GestionDeCobro = Lfx.Types.Parsing.ParseCurrency(EntradaGestionDeCobro.Text);
                                decimal Impuestos = Lfx.Types.Parsing.ParseCurrency(EntradaImpuestos.Text);

                                IDbTransaction Trans = this.Connection.BeginTransaction(IsolationLevel.Serializable);

                                Lbl.Cajas.Caja CajaDestino = EntradaCajaDestino.Elemento as Lbl.Cajas.Caja;
                                this.Cheque.Efectivizar(CajaDestino, GestionDeCobro, Impuestos);

                                Trans.Commit();
                        }
                        return Res;
                }
Beispiel #13
0
                /// <summary>
                /// Inicia una conexión con la base de datos y verifica si la versión de la la misma es la última disponible. En caso contrario la actualiza.
                /// </summary>
                internal static Lfx.Types.OperationResult AbrirConexion()
                {
                        Lfx.Types.OperationResult iniciarReturn = new Lfx.Types.SuccessOperationResult();

                        //Si el servidor SQL es esta misma PC, intento iniciar el servidor
                        if (Lfx.Environment.SystemInformation.Platform == Lfx.Environment.SystemInformation.Platforms.Windows && Lfx.Data.DataBaseCache.DefaultCache.ServerName.ToUpperInvariant() == "LOCALHOST") {
                                switch (Lfx.Data.DataBaseCache.DefaultCache.AccessMode) {
                                        case Lfx.Data.AccessModes.MySql:
                                                Lfx.Environment.Shell.Execute("net", "start mysql", ProcessWindowStyle.Hidden, true);
                                                break;
                                        case Lfx.Data.AccessModes.Npgsql:
                                                // FIXME: detectar el nombre del servicio.
                                                Lfx.Environment.Shell.Execute("net", "start postgresql-9.0", ProcessWindowStyle.Hidden, true);
                                                break;
                                }
                        }

                        try {
                                Lfx.Workspace.Master.MasterConnection.Open();
                        } catch (Exception ex) {
                                return new Lfx.Types.FailureOperationResult(ex.Message);
                        }

                        if (Lfx.Workspace.Master.IsPrepared() == false) {
                                using (Lui.Forms.YesNoDialog Pregunta = new Lui.Forms.YesNoDialog(@"Aparentemente es la primera vez que utiliza este almacén de datos. Antes de poder utilizarlo debe prepararlo con una carga inicial de datos.
Responda 'Sí' sólamente si es la primera vez que utiliza Lázaro o está restaurando desde una copia de seguridad.", @"¿Desea preparar el almacén de datos?")) {
                                        Pregunta.DialogButtons = Lui.Forms.DialogButtons.YesNo;
                                        if (Pregunta.ShowDialog() == DialogResult.OK) {
                                                Lfx.Types.OperationResult Res;
                                                using (Lfx.Data.Connection DataBase = Lfx.Workspace.Master.GetNewConnection("Preparar almacén de datos")) {
                                                        DataBase.RequiresTransaction = false;
                                                        Res = Lfx.Workspace.Master.Prepare(null);
                                                }
                                                if (Res.Success == false)
                                                        return Res;
                                        } else {
                                                return new Lfx.Types.FailureOperationResult("Debe preparar el almacén de datos.");
                                        }
                                }
                        }

                        // Configuro el nivel de aislación predeterminado
                        Lfx.Data.DataBaseCache.DefaultCache.DefaultIsolationLevel = (System.Data.IsolationLevel)(Enum.Parse(typeof(System.Data.IsolationLevel), Lfx.Workspace.Master.CurrentConfig.ReadGlobalSetting<string>("Sistema.Datos.Aislacion", "Serializable")));

                        return iniciarReturn;
                }
                private void Imprimir()
                {
                        Lfx.Types.OperationResult Res;
                        if (this.ReadOnly) {
                                Res = new Lfx.Types.SuccessOperationResult();
                        } else {
                                if (this.Elemento.Existe == false) {
                                        // Si es nuevo, lo guardo sin preguntar.
                                        Res = this.Save();
                                } else if (this.Changed) {
                                        // Si es edición, y hay cambios, pregunto si quiere guardar
                                        using (Lui.Forms.YesNoDialog Pregunta = new Lui.Forms.YesNoDialog("Hay modificaciones sin guardar (subrayadas en color rojo). Antes de imprimir el ducumento se guardarán las modificaciones. ¿Desea continuar?", "Imprimir")) {
                                                Pregunta.DialogButtons = Lui.Forms.DialogButtons.YesNo;
                                                this.ShowChanged = true;
                                                if (Pregunta.ShowDialog() == System.Windows.Forms.DialogResult.OK) {
                                                        Res = this.Save();
                                                } else {
                                                        Res = new Lfx.Types.CancelOperationResult();
                                                }
                                                this.ShowChanged = false;
                                        }
                                } else {
                                        // Es edición y no hay cambios... continúo
                                        Res = new Lfx.Types.SuccessOperationResult();
                                }
                        }

                        if (Res.Success)
                                Res = this.ControlUnico.BeforePrint();

                        if (Res.Success) {
                                Lbl.Impresion.Impresora Impresora = null;
                                if ((System.Windows.Forms.Control.ModifierKeys & Keys.Shift) == Keys.Shift) {
                                        using (Lui.Printing.PrinterSelectionDialog FormularioSeleccionarImpresora = new Lui.Printing.PrinterSelectionDialog()) {
                                                if (FormularioSeleccionarImpresora.ShowDialog() == DialogResult.OK) {
                                                        Impresora = FormularioSeleccionarImpresora.SelectedPrinter;
                                                } else {
                                                        return;
                                                }
                                        }
                                }

                                string NombreDocumento = Elemento.ToString();
                                Lbl.Impresion.CargasPapel Carga = Lbl.Impresion.CargasPapel.Automatica;
                                if (Impresora != null && Impresora.CargaPapel == Lbl.Impresion.CargasPapel.Manual) {
                                        Carga = Lbl.Impresion.CargasPapel.Manual;
                                } else if (this.Elemento is Lbl.Comprobantes.ComprobanteConArticulos) {
                                        Lbl.Comprobantes.ComprobanteConArticulos Comprob = this.Elemento as Lbl.Comprobantes.ComprobanteConArticulos;

                                        if (Lbl.Comprobantes.PuntoDeVenta.TodosPorNumero[Comprob.PV].Tipo == Lbl.Comprobantes.TipoPv.Fiscal) {
                                                Carga = Lbl.Impresion.CargasPapel.Automatica;
                                        } else {
                                                // El tipo de comprobante puede forzar a una carga manual
                                                Carga = Comprob.Tipo.CargaPapel;

                                                // Intento averiguar el número de comprobante, en caso de que aun no esté numerado
                                                if (Comprob.Numero == 0) {
                                                        int ProximoNumero = Lbl.Comprobantes.Numerador.ProximoNumero(Comprob);
                                                        NombreDocumento = NombreDocumento.Replace("00000000", ProximoNumero.ToString("00000000"));
                                                }
                                        }
                                }

                                if (Carga == Lbl.Impresion.CargasPapel.Manual) {
                                        using (Lui.Printing.ManualFeedDialog FormularioCargaManual = new Lui.Printing.ManualFeedDialog()) {
                                                FormularioCargaManual.DocumentName = NombreDocumento;
                                                // Muestro el nombre de la impresora
                                                if (Impresora != null) {
                                                        FormularioCargaManual.PrinterName = Impresora.Nombre;
                                                } else {
                                                        System.Drawing.Printing.PrinterSettings ObjPrint = new System.Drawing.Printing.PrinterSettings();
                                                        FormularioCargaManual.PrinterName = ObjPrint.PrinterName;
                                                }
                                                if (FormularioCargaManual.ShowDialog() == DialogResult.Cancel)
                                                        return;
                                        }
                                }

                                if (Impresora != null && Impresora.EsVistaPrevia) {
                                        Lazaro.Impresion.ImpresorElemento ImpresorVistaPrevia = Lazaro.Impresion.Instanciador.InstanciarImpresor(this.Elemento, null);
                                        ImpresorVistaPrevia.PrintController = new System.Drawing.Printing.PreviewPrintController();
                                        Lui.Printing.PrintPreviewForm VistaPrevia = new Lui.Printing.PrintPreviewForm();
                                        VistaPrevia.MdiParent = this.ParentForm.MdiParent;
                                        VistaPrevia.PrintPreview.Document = ImpresorVistaPrevia;
                                        VistaPrevia.Show();
                                } else {
                                        Lfx.Types.OperationProgress Progreso = new Lfx.Types.OperationProgress("Imprimiendo", "El documento se está enviando a la impresora.");
                                        if (Impresora != null)
                                                Progreso.Description = "El documento se está enviando a la impresora " + Impresora.ToString();
                                        Progreso.Modal = false;
                                        Progreso.Begin();

                                        using (IDbTransaction Trans = this.Elemento.Connection.BeginTransaction()) {
                                                Lazaro.Impresion.ImpresorElemento Impresor = Lazaro.Impresion.Instanciador.InstanciarImpresor(this.Elemento, Trans);
                                                Impresor.Impresora = Impresora;
                                                try {
                                                        Res = Impresor.Imprimir();
                                                } catch (Exception ex) {
                                                        Res = new Lfx.Types.FailureOperationResult(ex.Message);
                                                }
                                                Progreso.End();
                                                if (Res.Success == false) {
                                                        if (Impresor.Transaction != null)
                                                                // Puede que la transacción ya haya sido finalizada por el impresor
                                                                Impresor.Transaction.Rollback();
                                                        Lui.Forms.MessageBox.Show(Res.Message, "Error");
                                                } else {
                                                        if (Impresor.Transaction != null)
                                                                // Puede que la transacción ya haya sido finalizada por el impresor
                                                                Impresor.Transaction.Commit();
                                                        this.Elemento.Cargar();
                                                        this.FromRow(this.Elemento);
                                                        this.ControlUnico.AfterPrint();
                                                }
                                        }
                                }
                        } 
                        
                        if (Res.Success == false && Res.Message != null) {
                                Lui.Forms.MessageBox.Show(Res.Message, "Imprimir");
                        }
                }
Beispiel #15
0
        /// <summary>
        /// Inicia una conexión con la base de datos y verifica si la versión de la la misma es la última disponible. En caso contrario la actualiza.
        /// </summary>
        internal static Lfx.Types.OperationResult AbrirConexion()
        {
            Lfx.Types.OperationResult iniciarReturn = new Lfx.Types.SuccessOperationResult();

            //Si el servidor SQL es esta misma PC, intento iniciar el servidor
            if (Lfx.Environment.SystemInformation.Platform == Lfx.Environment.SystemInformation.Platforms.Windows && Lfx.Workspace.Master.ConnectionParameters.ServerName.ToUpperInvariant() == "LOCALHOST")
            {
                switch (Lfx.Data.DatabaseCache.DefaultCache.AccessMode)
                {
                case Lfx.Data.AccessModes.MySql:
                    Lfx.Environment.Shell.Execute("net", "start mysql", ProcessWindowStyle.Hidden, true);
                    break;

                case Lfx.Data.AccessModes.Npgsql:
                    // FIXME: detectar el nombre del servicio.
                    Lfx.Environment.Shell.Execute("net", "start postgresql-9.0", ProcessWindowStyle.Hidden, true);
                    break;
                }
            }

            try
            {
                Lfx.Workspace.Master.MasterConnection.Open();
            }
            catch (Exception ex)
            {
                return(new Lfx.Types.FailureOperationResult(ex.Message));
            }

            if (Lfx.Workspace.Master.IsPrepared() == false)
            {
                using (Lui.Forms.YesNoDialog Pregunta = new Lui.Forms.YesNoDialog(@"Aparentemente es la primera vez que utiliza este almacén de datos. Antes de poder utilizarlo debe prepararlo con una carga inicial de datos.
Responda 'Sí' sólamente si es la primera vez que utiliza Gestión o está restaurando desde una copia de seguridad.", @"¿Desea preparar el almacén de datos?"))
                {
                    Pregunta.DialogButtons = Lui.Forms.DialogButtons.YesNo;
                    if (Pregunta.ShowDialog() == DialogResult.OK)
                    {
                        Lfx.Types.OperationResult Res;
                        using (var Connection = Lfx.Workspace.Master.GetNewConnection("Preparar almacén de datos") as Lfx.Data.Connection)
                        {
                            Connection.RequiresTransaction = false;
                            Res = Lfx.Workspace.Master.Prepare(null);
                        }
                        if (Res.Success == false)
                        {
                            return(Res);
                        }
                    }
                    else
                    {
                        return(new Lfx.Types.FailureOperationResult("Debe preparar el almacén de datos."));
                    }
                }
            }

            // Configuro el nivel de aislación predeterminado
            // FIXME: no puedo obtener esto de la BD (System.Data.IsolationLevel)(Enum.Parse(typeof(System.Data.IsolationLevel), Lfx.Workspace.Master.CurrentConfig.ReadGlobalSetting<string>("Sistema.Datos.Aislacion", "Serializable")));
            Lfx.Data.DatabaseCache.DefaultCache.DefaultIsolationLevel = System.Data.IsolationLevel.Serializable;

            return(iniciarReturn);
        }
Beispiel #16
0
                public override Lfx.Types.OperationResult Ok()
                {
                        Lfx.Types.OperationResult Res = new Lfx.Types.SuccessOperationResult();
                        if (EntradaCajaOrigen.ValueInt <= 0) {
                                Res.Success = false;
                                Res.Message += "Por favor seleccione la cuenta de origen." + Environment.NewLine;
                        }
                        if (EntradaTotal.ValueDecimal <= 0) {
                                Res.Success = false;
                                Res.Message += "El importe total debe ser mayor o igual a cero." + Environment.NewLine;
                        }
                        if (Res.Success == true) {
                                decimal Impuestos = EntradaImpuestos.ValueDecimal;

                                IDbTransaction Trans = null;
                                if (this.Connection.InTransaction == false) {
                                        Trans = this.Connection.BeginTransaction(IsolationLevel.Serializable);
                                }

                                string ChequesNum = null;
                                System.Data.DataTable TablaCheques = Connection.Select("SELECT * FROM bancos_cheques WHERE id_cheque IN (" + ChequesIds + ")");
                                Lbl.Cajas.Caja CajaOrigen = new Lbl.Cajas.Caja(Connection, EntradaCajaOrigen.ValueInt);
                                foreach (System.Data.DataRow RowCheque in TablaCheques.Rows) {
                                        Lbl.Bancos.Cheque Cheque = new Lbl.Bancos.Cheque(this.Connection, (Lfx.Data.Row)RowCheque);
                                        Cheque.Pagar(CajaOrigen);
                                }

                                if (Impuestos != 0)
                                        CajaOrigen.Movimiento(true, new Lbl.Cajas.Concepto(this.Connection, 23030),
                                                "Impuestos de cheque(s)",
                                                null,
                                                -Impuestos,
                                                "Cheques Nº " + ChequesNum, null, null, null);

                                if (Trans != null) {
                                        Trans.Commit();
                                }
                        }
                        return Res;
                }
Beispiel #17
0
                public override Lfx.Types.OperationResult Ok()
                {
                        Lfx.Types.OperationResult Res = new Lfx.Types.SuccessOperationResult();
                        Res.Success = true;

                        if (Lfx.Types.Parsing.ParseCurrency(EntradaImporte.Text) <= 0) {
                                Res.Success = false;
                                Res.Message += "Debe escribir el importe." + Environment.NewLine;
                        }

                        if (EntradaCaja.ValueInt == 0) {
                                Res.Success = false;
                                Res.Message += "Debe seleccionar la caja." + Environment.NewLine;
                        }

                        if (EntradaConcepto.ValueInt == 0) {
                                Res.Success = false;
                                Res.Message += "Debe seleccionar el concepto." + Environment.NewLine;
                        }

                        if (Res.Success == true) {
                                using (IDbTransaction Trans = this.Caja.Connection.BeginTransaction()) {
                                        if (m_Ingreso)
                                                this.Caja.Movimiento(false,
                                                        EntradaConcepto.Elemento as Lbl.Cajas.Concepto,
                                                        EntradaConcepto.TextDetail,
                                                        EntradaPersona.Elemento as Lbl.Personas.Persona,
                                                        EntradaImporte.ValueDecimal,
                                                        EntradaObs.Text,
                                                        null,
                                                        null,
                                                        EntradaComprobante.Text);
                                        else
                                                this.Caja.Movimiento(false,
                                                        EntradaConcepto.Elemento as Lbl.Cajas.Concepto,
                                                        EntradaConcepto.TextDetail,
                                                        EntradaPersona.Elemento as Lbl.Personas.Persona,
                                                        -EntradaImporte.ValueDecimal,
                                                        EntradaObs.Text,
                                                        null,
                                                        null,
                                                        EntradaComprobante.Text);
                                        Trans.Commit();
                                }
                        }
                        return Res;
                }
Beispiel #18
0
                public override Lfx.Types.OperationResult ValidarControl()
                {
                        Lfx.Types.OperationResult Res = new Lfx.Types.SuccessOperationResult();

                        if (EntradaNombre.Text.Length < 2) {
                                Res.Success = false;
                                Res.Message += "Por favor escriba el nombre del artículo." + Environment.NewLine;
                        }

                        if (EntradaCodigo1.Text.Length > 0) {
                                Lfx.Data.Row Articulo = this.Connection.FirstRowFromSelect("SELECT id_articulo FROM articulos WHERE codigo1='" + EntradaCodigo1.Text + "' AND id_articulo<>" + this.Elemento.Id.ToString());

                                if (Articulo != null) {
                                        Res.Success = false;
                                        Res.Message += "Ya existe un artículo con el mismo código (" + EtiquetaCodigo1.Text + " " + EntradaCodigo1.Text + ") en la base de datos." + Environment.NewLine;
                                }
                        }

                        if (EntradaCodigo2.Text.Length > 0) {
                                Lfx.Data.Row Articulo = this.Connection.FirstRowFromSelect("SELECT id_articulo FROM articulos WHERE codigo2='" + EntradaCodigo2.Text + "' AND id_articulo<>" + this.Elemento.Id.ToString());

                                if (Articulo != null) {
                                        Res.Success = false;
                                        Res.Message += "Ya existe un artículo con el mismo código (" + EtiquetaCodigo2.Text + " " + EntradaCodigo2.Text + ") en la base de datos." + Environment.NewLine;
                                }
                        }

                        if (EntradaCodigo3.Text.Length > 0) {
                                Lfx.Data.Row Articulo = this.Connection.FirstRowFromSelect("SELECT id_articulo FROM articulos WHERE codigo3='" + EntradaCodigo3.Text + "' AND id_articulo<>" + this.Elemento.Id.ToString());

                                if (Articulo != null) {
                                        Res.Success = false;
                                        Res.Message += "Ya existe un artículo con el mismo código (" + EtiquetaCodigo3.Text + " " + EntradaCodigo3.Text + ") en la base de datos." + Environment.NewLine;
                                }
                        }

                        if (EntradaCodigo4.Text.Length > 0) {
                                Lfx.Data.Row Articulo = this.Connection.FirstRowFromSelect("SELECT id_articulo FROM articulos WHERE codigo4='" + EntradaCodigo4.Text + "' AND id_articulo<>" + this.Elemento.Id.ToString());

                                if (Articulo != null) {
                                        Res.Success = false;
                                        Res.Message += "Ya existe un artículo con el mismo código (" + EtiquetaCodigo4.Text + " " + EntradaCodigo4.Text + ") en la base de datos." + Environment.NewLine;
                                }
                        }

                        return Res;
                }
        private void Imprimir()
        {
            Lfx.Types.OperationResult Res;
            if (this.ReadOnly)
            {
                Res = new Lfx.Types.SuccessOperationResult();
            }
            else
            {
                if (this.Elemento.Existe == false)
                {
                    // Si es nuevo, lo guardo sin preguntar.
                    Res = this.Save();
                }
                else if (this.Changed)
                {
                    // Si es edición, y hay cambios, pregunto si quiere guardar
                    using (Lui.Forms.YesNoDialog Pregunta = new Lui.Forms.YesNoDialog("Hay modificaciones sin guardar (subrayadas en color rojo). Antes de imprimir el ducumento se guardarán las modificaciones. ¿Desea continuar?", "Imprimir")) {
                        Pregunta.DialogButtons = Lui.Forms.DialogButtons.YesNo;
                        this.ShowChanged       = true;
                        if (Pregunta.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                        {
                            Res = this.Save();
                        }
                        else
                        {
                            Res = new Lfx.Types.CancelOperationResult();
                        }
                        this.ShowChanged = false;
                    }
                }
                else
                {
                    // Es edición y no hay cambios... continúo
                    Res = new Lfx.Types.SuccessOperationResult();
                }
            }

            if (Res.Success)
            {
                Res = this.ControlUnico.BeforePrint();
            }

            if (Res.Success)
            {
                Lbl.Impresion.Impresora Impresora = null;
                if ((System.Windows.Forms.Control.ModifierKeys & Keys.Shift) == Keys.Shift)
                {
                    using (Lui.Printing.PrinterSelectionDialog FormularioSeleccionarImpresora = new Lui.Printing.PrinterSelectionDialog()) {
                        if (FormularioSeleccionarImpresora.ShowDialog() == DialogResult.OK)
                        {
                            Impresora = FormularioSeleccionarImpresora.SelectedPrinter;
                        }
                        else
                        {
                            return;
                        }
                    }
                }

                string NombreDocumento          = Elemento.ToString();
                Lbl.Impresion.CargasPapel Carga = Lbl.Impresion.CargasPapel.Automatica;
                if (Impresora != null && Impresora.CargaPapel == Lbl.Impresion.CargasPapel.Manual)
                {
                    Carga = Lbl.Impresion.CargasPapel.Manual;
                }
                else if (this.Elemento is Lbl.Comprobantes.ComprobanteConArticulos)
                {
                    Lbl.Comprobantes.ComprobanteConArticulos Comprob = this.Elemento as Lbl.Comprobantes.ComprobanteConArticulos;

                    if (Lbl.Comprobantes.PuntoDeVenta.TodosPorNumero[Comprob.PV].Tipo == Lbl.Comprobantes.TipoPv.Fiscal)
                    {
                        Carga = Lbl.Impresion.CargasPapel.Automatica;
                    }
                    else
                    {
                        // El tipo de comprobante puede forzar a una carga manual
                        Carga = Comprob.Tipo.CargaPapel;

                        // Intento averiguar el número de comprobante, en caso de que aun no esté numerado
                        if (Comprob.Numero == 0)
                        {
                            int ProximoNumero = Lbl.Comprobantes.Numerador.ProximoNumero(Comprob);
                            NombreDocumento = NombreDocumento.Replace("00000000", ProximoNumero.ToString("00000000"));
                        }
                    }
                }

                if (Carga == Lbl.Impresion.CargasPapel.Manual)
                {
                    using (Lui.Printing.ManualFeedDialog FormularioCargaManual = new Lui.Printing.ManualFeedDialog()) {
                        FormularioCargaManual.DocumentName = NombreDocumento;
                        // Muestro el nombre de la impresora
                        if (Impresora != null)
                        {
                            FormularioCargaManual.PrinterName = Impresora.Nombre;
                        }
                        else
                        {
                            System.Drawing.Printing.PrinterSettings ObjPrint = new System.Drawing.Printing.PrinterSettings();
                            FormularioCargaManual.PrinterName = ObjPrint.PrinterName;
                        }
                        if (FormularioCargaManual.ShowDialog() == DialogResult.Cancel)
                        {
                            return;
                        }
                    }
                }

                if (Impresora != null && Impresora.EsVistaPrevia)
                {
                    Lazaro.Impresion.ImpresorElemento ImpresorVistaPrevia = Lazaro.Impresion.Instanciador.InstanciarImpresor(this.Elemento, null);
                    ImpresorVistaPrevia.PrintController = new System.Drawing.Printing.PreviewPrintController();
                    Lui.Printing.PrintPreviewForm VistaPrevia = new Lui.Printing.PrintPreviewForm();
                    VistaPrevia.MdiParent             = this.ParentForm.MdiParent;
                    VistaPrevia.PrintPreview.Document = ImpresorVistaPrevia;
                    VistaPrevia.Show();
                }
                else
                {
                    Lfx.Types.OperationProgress Progreso = new Lfx.Types.OperationProgress("Imprimiendo", "El documento se está enviando a la impresora.");
                    if (Impresora != null)
                    {
                        Progreso.Description = "El documento se está enviando a la impresora " + Impresora.ToString();
                    }
                    Progreso.Modal = false;
                    Progreso.Begin();

                    using (IDbTransaction Trans = this.Elemento.Connection.BeginTransaction()) {
                        Lazaro.Impresion.ImpresorElemento Impresor = Lazaro.Impresion.Instanciador.InstanciarImpresor(this.Elemento, Trans);
                        Impresor.Impresora = Impresora;
                        try {
                            Res = Impresor.Imprimir();
                        } catch (Exception ex) {
                            Res = new Lfx.Types.FailureOperationResult(ex.Message);
                        }
                        Progreso.End();
                        if (Res.Success == false)
                        {
                            if (Impresor.Transaction != null)
                            {
                                // Puede que la transacción ya haya sido finalizada por el impresor
                                Impresor.Transaction.Rollback();
                            }
                            Lui.Forms.MessageBox.Show(Res.Message, "Error");
                        }
                        else
                        {
                            if (Impresor.Transaction != null)
                            {
                                // Puede que la transacción ya haya sido finalizada por el impresor
                                Impresor.Transaction.Commit();
                            }
                            this.Elemento.Cargar();
                            this.FromRow(this.Elemento);
                            this.ControlUnico.AfterPrint();
                        }
                    }
                }
            }

            if (Res.Success == false && Res.Message != null)
            {
                Lui.Forms.MessageBox.Show(Res.Message, "Imprimir");
            }
        }
Beispiel #20
0
                public override Lfx.Types.OperationResult ValidarControl()
                {
                        Lfx.Types.OperationResult validarReturn = new Lfx.Types.SuccessOperationResult();
                        Lbl.Comprobantes.Recibo Rec = this.Elemento as Lbl.Comprobantes.Recibo;

                        if (EntradaCliente.ValueInt <= 0 || EntradaCliente.ValueInt == 999) {
                                validarReturn.Success = false;
                                validarReturn.Message = "Por favor seleccione un cliente válido." + Environment.NewLine;
                        }

                        if (EntradaConcepto.ValueInt <= 0) {
                                validarReturn.Success = false;
                                validarReturn.Message = "Por favor seleccione un concepto para el movimiento." + Environment.NewLine;
                        }

                        if (this.DePago) {
                                // Recibo de pago
                                if (Rec.Pagos.ImporteTotal <= 0) {
                                        validarReturn.Success = false;
                                        validarReturn.Message = "Debe especificar los valores de pago." + Environment.NewLine;
                                }
                        } else {
                                // Recibo de cobro
                                if (Rec.Cobros.ImporteTotal <= 0) {
                                        validarReturn.Success = false;
                                        validarReturn.Message = "Debe especificar los valores de cobro." + Environment.NewLine;
                                }
                        }

                        if (this.Elemento.Existe == false && EntradaNumero.Text.ParseInt() != 0) {
                                int bExiste = this.Connection.FieldInt("SELECT COUNT(id_recibo) FROM recibos WHERE estado<90 AND pv=" + EntradaPV.ValueInt.ToString() + " AND numero=" + EntradaNumero.ValueInt.ToString());
                                if (bExiste != 0) {
                                        validarReturn.Success = false;
                                        validarReturn.Message = "Ya existe un Recibo con ese número." + Environment.NewLine;
                                }
                        }
                        return validarReturn;
                }