Exemplo n.º 1
0
        private void PanelPruebaServidor_VisibleChanged(object sender, EventArgs e)
        {
            if (PanelPruebaServidor.Visible)
            {
                // Probar la conexión al servidor
                if (CheckEsteEquipo.Checked)
                {
                    Lfx.Workspace.Master.ConnectionParameters.ServerName = "localhost";
                    Lfx.Workspace.Master.ConnectionParameters.UserName   = "******";
                    Lfx.Workspace.Master.ConnectionParameters.Password   = "";
                }
                else
                {
                    Lfx.Workspace.Master.ConnectionParameters.ServerName = EntradaServidor.Text;
                    Lfx.Workspace.Master.ConnectionParameters.UserName   = "******";
                    Lfx.Workspace.Master.ConnectionParameters.Password   = "";
                }

                Lfx.Data.DatabaseCache.DefaultCache.AccessMode         = Lfx.Data.AccessModes.MySql;
                Lfx.Data.DatabaseCache.DefaultCache.SlowLink           = false;
                Lfx.Workspace.Master.ConnectionParameters.DatabaseName = "";

                Lfx.Types.OperationResult Res = this.ProbarServidor();
                EtiquetaPruebaResultado.Text = Res.Message;
                BotonSiguiente.Enabled       = Res.Success;
            }
        }
Exemplo n.º 2
0
        public void Load()
        {
            if (this.Instancia == null)
            {
                this.Instancia = (Lfx.Components.Function) this.ComponentInfo.Assembly.CreateInstance(this.ComponentInfo.EspacioNombres + "." + this.Nombre);
            }

            if (Instancia != null)
            {
                this.Instancia.Workspace = Lfx.Workspace.Master;
                Lfx.Types.OperationResult Res = this.Instancia.Try();
                if (Res.Success)
                {
                    this.Ready = true;
                }
                else
                {
                    this.Ready = false;
                }
            }
            else
            {
                this.Ready = false;
            }
        }
Exemplo n.º 3
0
        public Lfx.Types.OperationResult Save()
        {
            Lfx.Types.OperationResult Res = this.ValidarControl();
            if (Res.Success == false)
            {
                return(Res);
            }

            Res = this.BeforeSave();
            if (Res.Success == false)
            {
                return(Res);
            }

            if (this.SaveRequest != null)
            {
                Lcc.LccEventArgs Args = new Lcc.LccEventArgs();
                this.SaveRequest(this, ref Args);
                if (Args.Result != null)
                {
                    return(Args.Result);
                }
                else
                {
                    return(new Lfx.Types.SuccessOperationResult());
                }
            }
            else
            {
                return(new Lfx.Types.FailureOperationResult("No se puede grabar"));
            }
        }
Exemplo n.º 4
0
 private Lfx.Types.OperationResult EditarPermisos()
 {
     if (Lui.LogOn.LogOnData.ValidateAccess(this.Elemento, Lbl.Sys.Permisos.Operaciones.Administrar))
     {
         if (this.Changed || this.Elemento.Existe == false)
         {
             Lui.Forms.YesNoDialog Pregunta = new Lui.Forms.YesNoDialog("Antes de editar los permisos debe guardar los cambios en este formulario. ¿Desea guardar ahora?", "Editar Permisos");
             Pregunta.DialogButtons = Lui.Forms.DialogButtons.YesNo;
             if (this.Elemento.Existe)
             {
                 this.ShowChanged = true;
             }
             DialogResult Respuesta = Pregunta.ShowDialog();
             this.ShowChanged = false;
             if (Respuesta != DialogResult.OK)
             {
                 return(new Lfx.Types.CancelOperationResult());
             }
             else
             {
                 Lfx.Types.OperationResult ResultadoGuardar = this.Save();
                 if (ResultadoGuardar.Success == false)
                 {
                     return(ResultadoGuardar);
                 }
             }
         }
         Lfx.Workspace.Master.RunTime.Execute("EDITAR Lbl.Personas.Usuario " + this.Elemento.Id.ToString());
         return(new Lfx.Types.SuccessOperationResult());
     }
     else
     {
         return(new Lfx.Types.NoAccessOperationResult());
     }
 }
Exemplo n.º 5
0
        public override Lfx.Types.OperationResult OnFilter()
        {
            Lfx.Types.OperationResult filtrarReturn = base.OnFilter();
            if (filtrarReturn.Success == true)
            {
                using (Bancos.Chequeras.Filtros FormFiltros = new Bancos.Chequeras.Filtros()) {
                    FormFiltros.Connection            = this.Connection;
                    FormFiltros.EntradaEstado.TextKey = ((int)m_Estado).ToString();
                    FormFiltros.EntradaBanco.ValueInt = m_Banco;
                    FormFiltros.EntradaCaja.ValueInt  = m_Caja;

                    FormFiltros.ShowDialog();
                    if (FormFiltros.DialogResult == DialogResult.OK)
                    {
                        m_Estado = (Estados)Lfx.Types.Parsing.ParseInt(FormFiltros.EntradaEstado.TextKey);
                        m_Banco  = FormFiltros.EntradaBanco.ValueInt;
                        m_Caja   = FormFiltros.EntradaCaja.ValueInt;
                        RefreshList();
                        filtrarReturn.Success = true;
                    }
                    else
                    {
                        filtrarReturn.Success = false;
                    }
                }
            }
            return(filtrarReturn);
        }
Exemplo n.º 6
0
        public override Lfx.Types.OperationResult OnFilter()
        {
            Lfx.Types.OperationResult filtrarReturn = base.OnFilter();

            if (filtrarReturn.Success == true)
            {
                using (Comprobantes.Recibos.Filtros FormFiltros = new Comprobantes.Recibos.Filtros()) {
                    FormFiltros.Connection = this.Connection;
                    FormFiltros.EntradaSucursal.ValueInt = m_Sucursal;
                    FormFiltros.EntradaCliente.ValueInt  = m_Cliente;
                    FormFiltros.EntradaVendedor.ValueInt = m_Vendedor;
                    FormFiltros.EntradaFechas.Rango      = m_Fecha;
                    FormFiltros.Owner = this;
                    FormFiltros.ShowDialog();

                    if (FormFiltros.DialogResult == DialogResult.OK)
                    {
                        m_Sucursal = FormFiltros.EntradaSucursal.ValueInt;
                        m_Cliente  = FormFiltros.EntradaCliente.ValueInt;
                        m_Vendedor = FormFiltros.EntradaVendedor.ValueInt;
                        m_Fecha    = FormFiltros.EntradaFechas.Rango;

                        this.RefreshList();
                        filtrarReturn.Success = true;
                    }
                    else
                    {
                        filtrarReturn.Success = false;
                    }
                }
            }

            return(filtrarReturn);
        }
Exemplo n.º 7
0
 private void BotonCrear_Click(object sender, System.EventArgs e)
 {
     Lfx.Types.OperationResult Res = this.OnCreate();
     if (Res.Success == false && Res.Message != null)
     {
         Lui.Forms.MessageBox.Show(Res.Message, "Error");
     }
 }
Exemplo n.º 8
0
        /// <summary>
        /// Inicia el acceso al almacén de datos.
        /// </summary>
        private static void IniciarDatos()
        {
            Lfx.Types.OperationResult Res = AbrirConexion();
            // Habilito el gestor de configuración
            Lbl.Sys.Config.Actual = new Lbl.Sys.Configuracion.Global();
            Lbl.Sys.Config.Cargar();

            // Habilito la recuperación de conexiones
            Lfx.Workspace.Master.MasterConnection.EnableRecover = true;
        }
Exemplo n.º 9
0
        private void DescargarEInstalar(Lfx.Types.OperationProgress progreso)
        {
            string InstaladorMariaDb = "InstalarMariaDB.exe";
            string CarpetaDescarga;

            if (System.IO.File.Exists(Lfx.Environment.Folders.ApplicationFolder + @"..\WebInstall\" + InstaladorMariaDb))
            {
                CarpetaDescarga = Lfx.Environment.Folders.ApplicationFolder + @"..\WebInstall\";
            }
            else
            {
                progreso.ChangeStatus("Descargando, por favor aguarde...");
                CarpetaDescarga = Lfx.Environment.Folders.TemporaryFolder;
                Lfx.Environment.Folders.EnsurePathExists(CarpetaDescarga);
                using (WebClient Cliente = new WebClient()) {
                    try {
                        Cliente.DownloadFile("http://www.lazarogestion.com/aslnlwc/" + InstaladorMariaDb, CarpetaDescarga + InstaladorMariaDb);
                    } catch (Exception ex) {
                        progreso.ChangeStatus("Error al descargar: " + ex.Message);
                    }
                }
            }

            if (System.IO.File.Exists(CarpetaDescarga + InstaladorMariaDb))
            {
                progreso.ChangeStatus("Instalando...");
                try {
                    Lfx.Environment.Shell.Execute(CarpetaDescarga + InstaladorMariaDb, "/verysilent /sp- /norestart", System.Diagnostics.ProcessWindowStyle.Normal, true);
                } catch (Exception ex) {
                    progreso.ChangeStatus("Error al instalar: " + ex.Message);
                }
            }

            Lfx.Workspace.Master.ConnectionParameters.ServerName   = "localhost";
            Lfx.Workspace.Master.ConnectionParameters.UserName     = "******";
            Lfx.Workspace.Master.ConnectionParameters.Password     = "";
            Lfx.Data.DatabaseCache.DefaultCache.AccessMode         = Lfx.Data.AccessModes.MySql;
            Lfx.Data.DatabaseCache.DefaultCache.SlowLink           = false;
            Lfx.Workspace.Master.ConnectionParameters.DatabaseName = "";

            Lfx.Types.OperationResult Res = this.ProbarServidor();
            if (Res.Success)
            {
                if (Lfx.Workspace.Master.IsPrepared() == false)
                {
                    Lfx.Workspace.Master.Prepare(progreso);
                }
                progreso.End();
            }
            else
            {
                Lfx.Workspace.Master.RunTime.Toast("No se puede descargar o instalar el servidor SQL. Puede volver atrás para intentarlo nuevamente o salir para instalarlo de forma manual.", "Error");
            }
        }
Exemplo n.º 10
0
        public override Lfx.Types.OperationResult OnFilter()
        {
            Lfx.Types.OperationResult filtrarReturn = base.OnFilter();
            if (filtrarReturn.Success == true)
            {
                using (Bancos.Cheques.Filtros FormFiltros = new Bancos.Cheques.Filtros()) {
                    FormFiltros.Connection = this.Connection;
                    if (this.Emitidos)
                    {
                        FormFiltros.EntradaEstado.SetData = new string[] {
                            "Todos|-1",
                            "A pagar y depositados|-2",
                            "A pagar|0",
                            "Depositado|5",
                            "Pagado|10",
                            "Anulado|90"
                        };
                    }
                    else
                    {
                        FormFiltros.EntradaEstado.SetData = new string[] {
                            "Todos|-1",
                            "A cobrar y depositados|-2",
                            "A cobrar|0",
                            "Depositado|5",
                            "Cobrado|10",
                            "Anulado|90"
                        };
                    }
                    FormFiltros.EntradaEstado.TextKey    = Estado.ToString();
                    FormFiltros.EntradaSucursal.ValueInt = Sucursal;
                    FormFiltros.EntradaBanco.ValueInt    = Banco;
                    FormFiltros.EntradaPersona.ValueInt  = Cliente;
                    FormFiltros.EntradaFechas.Rango      = Fechas;

                    FormFiltros.ShowDialog();
                    if (FormFiltros.DialogResult == DialogResult.OK)
                    {
                        Estado   = Lfx.Types.Parsing.ParseInt(FormFiltros.EntradaEstado.TextKey);
                        Sucursal = FormFiltros.EntradaSucursal.ValueInt;
                        Banco    = FormFiltros.EntradaBanco.ValueInt;
                        Cliente  = FormFiltros.EntradaPersona.ValueInt;
                        Fechas   = FormFiltros.EntradaFechas.Rango;
                        RefreshList();
                        filtrarReturn.Success = true;
                    }
                    else
                    {
                        filtrarReturn.Success = false;
                    }
                }
            }
            return(filtrarReturn);
        }
        public override Lfx.Types.OperationResult Imprimir()
        {
            if (this.Comprobante.Impreso && this.Reimpresion == false)
            {
                this.Reimpresion = true;
            }

            Lfx.Types.OperationResult ResultadoImprimir = this.Comprobante.VerificarSeries();

            if (ResultadoImprimir.Success == false)
            {
                return(ResultadoImprimir);
            }

            if (this.Comprobante.Tipo.EsFactura && this.Comprobante.FormaDePago == null)
            {
                throw new InvalidOperationException("La factura no tiene forma de pago.");
            }

            if (this.Impresora == null)
            {
                this.Impresora = this.ObtenerImpresora();
            }

            if (this.Reimpresion == false && Lfx.Workspace.Master.CurrentConfig.ReadGlobalSetting <int>("Sistema.Documentos.ActualizaCostoAlFacturar", 1) != 0)
            {
                // Asiento los precios de costo de los artículos de la factura (con fines estadsticos)
                foreach (Lbl.Comprobantes.DetalleArticulo Det in this.Comprobante.Articulos)
                {
                    if (Det.Articulo != null)
                    {
                        qGen.Update Act = new qGen.Update("comprob_detalle");
                        Act.ColumnValues.AddWithValue("costo", Det.Articulo.Costo);
                        Act.WhereClause = new qGen.Where("id_comprob_detalle", Det.Id);
                        this.Connection.ExecuteNonQuery(Act);
                    }
                }
            }

            ResultadoImprimir = base.Imprimir();

            // Los movimientos de stock y de dinero los asienta el servidor fiscal en los comprobantes fiscales
            if (this.Reimpresion == false && ResultadoImprimir.Success == true && this.ImprimiLocal)
            {
                //Resto el stock si corresponde
                this.Comprobante.MoverExistencias(false);

                // Asentar pagos si corresponde
                this.Comprobante.AsentarPago(false);
            }

            return(ResultadoImprimir);
        }
Exemplo n.º 12
0
        public override Lfx.Types.OperationResult OnFilter()
        {
            Lfx.Types.OperationResult ResultadoFiltrar = base.OnFilter();

            if (ResultadoFiltrar.Success == true)
            {
                using (Comprobantes.Filtros FormFiltros = new Comprobantes.Filtros())
                {
                    FormFiltros.Connection                     = this.Connection;
                    FormFiltros.EntradaTipo.TextKey            = this.Definicion.ElementoTipo.ToString();
                    FormFiltros.EntradaPv.Text                 = m_PV.ToString();
                    FormFiltros.EntradaLetra.TextKey           = Letra;
                    FormFiltros.EntradaSucursal.ValueInt       = m_Sucursal;
                    FormFiltros.EntradaFormaPago.ValueInt      = m_FormaPago;
                    FormFiltros.EntradaCliente.ValueInt        = m_Cliente;
                    FormFiltros.EntradaVendedor.ValueInt       = m_Vendedor;
                    FormFiltros.EntradaCobrador.ValueInt       = m_Cobrador;
                    FormFiltros.EntradaFechas.Rango            = m_Fechas;
                    FormFiltros.EntradaEstado.TextKey          = m_Estado;
                    FormFiltros.EntradaAnuladas.ValueInt       = m_Anuladas;
                    FormFiltros.EntradaMontoDesde.ValueDecimal = m_MontoDesde;
                    FormFiltros.EntradaMontoHasta.ValueDecimal = m_MontoHasta;
                    FormFiltros.Owner = this;
                    FormFiltros.ShowDialog();

                    if (FormFiltros.DialogResult == DialogResult.OK)
                    {
                        m_Sucursal   = FormFiltros.EntradaSucursal.ValueInt;
                        m_FormaPago  = FormFiltros.EntradaFormaPago.ValueInt;
                        m_Cliente    = FormFiltros.EntradaCliente.ValueInt;
                        m_Vendedor   = FormFiltros.EntradaVendedor.ValueInt;
                        m_Cobrador   = FormFiltros.EntradaCobrador.ValueInt;
                        m_Fechas     = FormFiltros.EntradaFechas.Rango;
                        m_Estado     = FormFiltros.EntradaEstado.TextKey;
                        m_Anuladas   = FormFiltros.EntradaAnuladas.ValueInt;
                        m_PV         = FormFiltros.EntradaPv.ValueInt;
                        m_MontoDesde = FormFiltros.EntradaMontoDesde.ValueDecimal;
                        m_MontoHasta = FormFiltros.EntradaMontoHasta.ValueDecimal;
                        this.Definicion.ElementoTipo = Lbl.Instanciador.InferirTipo(FormFiltros.EntradaTipo.TextKey);
                        Letra = FormFiltros.EntradaLetra.TextKey;

                        this.RefreshList();
                        ResultadoFiltrar.Success = true;
                    }
                    else
                    {
                        ResultadoFiltrar.Success = false;
                    }
                }
            }

            return(ResultadoFiltrar);
        }
Exemplo n.º 13
0
        // **************************************************************************************************
        // **************************************************************************************************
        // **************************************************************************************************
        // Sistema de Menú
        // **************************************************************************************************
        // **************************************************************************************************
        // **************************************************************************************************

        private void CargarMenuComponentes()
        {
            foreach (Lfx.Components.IComponent CompInfo in Lfx.Components.Manager.ComponentesCargados.Values)
            {
                // Registro el componente
                Lfx.Types.OperationResult Res = Lfx.Components.Manager.RegisterComponent(CompInfo);

                if (Res.Success == false && Res.Message != null)
                {
                    Lui.Forms.MessageBox.Show(Res.Message, "Error");
                }

                if (CompInfo != null && CompInfo.MenuEntries != null)
                {
                    foreach (Lfx.Components.MenuEntry MenuItem in CompInfo.MenuEntries)
                    {
                        //Busco el Parent
                        MenuItem     ColgarDe = null;
                        MenuItemInfo ItmInfo;
                        foreach (MenuItemInfo ItemInfo in MenuItemInfoTable.Values)
                        {
                            if (ItemInfo.ParentText + "." + ItemInfo.Text == ("Menu." + MenuItem.Parent).QuitarAcentos())
                            {
                                ColgarDe = ItemInfo.Item;
                                break;
                            }
                        }
                        if (ColgarDe == null)
                        {
                            //Si no hay de donde colgarlo, lo creo
                            ColgarDe           = new MenuItem(MenuItem.Parent, new System.EventHandler(Menu_Click));
                            ItmInfo            = new MenuItemInfo();
                            ItmInfo.Item       = ColgarDe;
                            ItmInfo.Funcion    = "";
                            ItmInfo.ParentText = "Menu".QuitarAcentos();
                            ItmInfo.Text       = MenuItem.Parent.QuitarAcentos();

                            AgregarAlMenu(this.MainMenu, ColgarDe, ItmInfo);
                        }

                        MenuItem Itm = new MenuItem(MenuItem.Name, new System.EventHandler(Menu_Click));
                        ItmInfo            = new MenuItemInfo();
                        ItmInfo.Item       = Itm;
                        ItmInfo.Funcion    = MenuItem.Function;
                        ItmInfo.ParentText = "Menu." + MenuItem.Parent.QuitarAcentos();
                        ItmInfo.Text       = MenuItem.Name.QuitarAcentos();
                        AgregarAlMenu(ColgarDe, Itm, ItmInfo);
                    }
                }
            }
        }
Exemplo n.º 14
0
        public override Lfx.Types.OperationResult OnFilter()
        {
            Lfx.Types.OperationResult ResultadoFiltrar = base.OnFilter();

            if (ResultadoFiltrar.Success == true)
            {
                using (Lfc.Comprobantes.Facturas.Filtros FormFiltros = new Lfc.Comprobantes.Facturas.Filtros()) {
                    FormFiltros.Connection = this.Connection;
                    FormFiltros.EntradaTipo.TemporaryReadOnly = true;
                    FormFiltros.EntradaTipo.TextKey           = this.Definicion.ElementoTipo.ToString();
                    FormFiltros.EntradaPv.Text                     = m_PV.ToString();
                    FormFiltros.EntradaLetra.TextKey               = m_Letra;
                    FormFiltros.EntradaSucursal.ValueInt           = m_Sucursal;
                    FormFiltros.EntradaVendedor.ValueInt           = m_CondIva;
                    FormFiltros.EntradaFormaPago.TemporaryReadOnly = true;
                    FormFiltros.EntradaFormaPago.ValueInt          = 0;
                    FormFiltros.EntradaCliente.TemporaryReadOnly   = true;
                    FormFiltros.EntradaCliente.ValueInt            = 0;
                    //FormFiltros.EntradaVendedor.TemporaryReadOnly = true;
                    //FormFiltros.EntradaVendedor.ValueInt = 0;
                    FormFiltros.EntradaFechas.Rango                 = m_Fecha;
                    FormFiltros.EntradaEstado.TemporaryReadOnly     = true;
                    FormFiltros.EntradaEstado.TextKey               = "3";
                    FormFiltros.EntradaAnuladas.TextKey             = m_Anuladas.ToString();
                    FormFiltros.EntradaMontoDesde.TemporaryReadOnly = true;
                    FormFiltros.EntradaMontoHasta.TemporaryReadOnly = true;
                    FormFiltros.Owner = this;
                    FormFiltros.ShowDialog();

                    if (FormFiltros.DialogResult == DialogResult.OK)
                    {
                        m_Sucursal = FormFiltros.EntradaSucursal.ValueInt;
                        m_CondIva  = FormFiltros.EntradaVendedor.ValueInt;
                        m_Fecha    = FormFiltros.EntradaFechas.Rango;
                        m_Anuladas = Lfx.Types.Parsing.ParseInt(FormFiltros.EntradaAnuladas.TextKey);
                        m_PV       = Lfx.Types.Parsing.ParseInt(FormFiltros.EntradaPv.Text);
                        this.Definicion.ElementoTipo = Lbl.Instanciador.InferirTipo(FormFiltros.EntradaTipo.TextKey);
                        m_Letra = FormFiltros.EntradaLetra.TextKey;

                        this.RefreshList();
                        ResultadoFiltrar.Success = true;
                    }
                    else
                    {
                        ResultadoFiltrar.Success = false;
                    }
                }
            }

            return(ResultadoFiltrar);
        }
Exemplo n.º 15
0
        private void OkButton_Click(object sender, System.EventArgs e)
        {
            Lfx.Types.OperationResult res = Ok();

            if (res.Success == true)
            {
                this.DialogResult = DialogResult.OK;
                this.Close();
            }
            else if (res.Message != null)
            {
                Lui.Forms.MessageBox.Show(res.Message, "Aviso");
            }
        }
Exemplo n.º 16
0
        /// <summary>
        /// Procesa el resultado de una operación.
        /// Si es un OperationResult, muestra el mensaje.
        /// Si es un formulario, muestra el formulario.
        /// </summary>
        public void ProcesarObjeto(object obj)
        {
            if (obj is Lfx.Types.OperationResult)
            {
                Lfx.Types.OperationResult ResOp = obj as Lfx.Types.OperationResult;
                if (ResOp.Success == false && ResOp.Message != null)
                {
                    Lfx.Workspace.Master.RunTime.Toast(ResOp.Message, "Error");
                }
            }
            else if (obj is System.Windows.Forms.Form)
            {
                System.Windows.Forms.Form ResForm = obj as System.Windows.Forms.Form;

                if (obj is Lui.Forms.ChildForm)
                {
                    ResForm.MdiParent = Aplicacion.FormularioPrincipal;
                }
                else if (Aplicacion.Flotante)
                {
                    ResForm.WindowState = Aplicacion.FormularioPrincipal.WindowState;
                    ResForm.Owner       = Aplicacion.FormularioPrincipal;
                }

                if (ResForm.DialogResult == System.Windows.Forms.DialogResult.Abort)
                {
                    Lfx.Workspace.Master.RunTime.Toast("No se puede tener acceso al formulario.", "Error");
                    ResForm.Dispose();
                }
                else
                {
                    try
                    {
                        ResForm.Show();
                        ResForm.BringToFront();
                    }
                    catch (ApplicationException ex)
                    {
                        Lfx.Workspace.Master.RunTime.Toast(ex.Message, "Error");
                        ResForm.Dispose();
                    }
                }
            }
            else if (obj != null)
            {
                Lfx.Workspace.Master.RunTime.Toast("La operación devolvió un objeto tipo " + obj.GetType().ToString(), "Aviso");
            }
        }
Exemplo n.º 17
0
        private void Guardar()
        {
            Lfx.Types.OperationResult Result = this.Save();

            if (Result.Success == true)
            {
                this.Close();
            }
            else
            {
                if (Result.Message != null && Result.Message.Length > 0)
                {
                    Lui.Forms.MessageBox.Show(Result.Message, "Error");
                }
            }
        }
Exemplo n.º 18
0
        public Lfx.Types.OperationResult ImprimirFacturaElectronicaAfip(Lbl.Comprobantes.ComprobanteConArticulos comprobante)
        {
            Lfx.Types.OperationResult Res = this.IniciarWsAfip();
            if (Res.Success == false)
            {
                return(Res);
            }

            var TipoComprob   = Afip.Ws.FacturaElectronica.Tablas.ComprobantesTiposPorLetra[comprobante.Tipo.Nomenclatura];
            var UltimoComprob = CliFe.UltimoComprobante(comprobante.PV, TipoComprob);

            int ProximoNumero = UltimoComprob.CbteNro + 1;

            var SolCae = Util.Comprobantes.ClienteAfipWsfe.CrearSolicitudCae(comprobante, ProximoNumero);

            var CantidadImpresos = CliFe.SolictarCae(SolCae);

            // TODO: tratamiento de errores

            foreach (var Comprob in SolCae.Comprobantes)
            {
                if (Comprob.Cae != null && string.IsNullOrWhiteSpace(Comprob.Cae.CodigoCae) == false)
                {
                    new Lbl.Comprobantes.Numerador(comprobante).Numerar(Comprob.Numero, Comprob.Cae.CodigoCae, Comprob.Cae.Vencimiento, true);
                    this.GenerarPdf(comprobante);
                }
            }


            if (CantidadImpresos > 0)
            {
                // La solicitud tuvo éxito (total o parcial)
                return(new Lfx.Types.SuccessOperationResult());
            }
            else
            {
                // La solicitud de CAE fue rechazada
                if (SolCae.Observaciones.Count > 0)
                {
                    return(new Lfx.Types.FailureOperationResult(SolCae.Observaciones[0].Mensaje));
                }
                else
                {
                    return(new Lfx.Types.FailureOperationResult("La solicitud de CAE fue rechazada"));
                }
            }
        }
Exemplo n.º 19
0
        public override Lfx.Types.OperationResult ValidarControl()
        {
            Lfx.Types.OperationResult Res = base.ValidarControl();
            EntradaNumero.ValueInt = UltimoNumero();
            if (EntradaHaciaSituacion.Visible && EntradaHaciaSituacion.ValueInt == 0)
            {
                Res.Success  = false;
                Res.Message += "Por favor seleccione un depósito de destino." + Environment.NewLine;
            }

            if (EntradaProveedor.ValueInt == 0)
            {
                Res.Success  = false;
                Res.Message += "Por favor seleccione el proveedor." + Environment.NewLine;
            }
            else if (this.Elemento.Existe == false)
            {
                qGen.Select SelDesde = new qGen.Select("comprob");
                SelDesde.Columns = new qGen.SqlIdentifierCollection()
                {
                    "id_comprob"
                };
                SelDesde.WhereClause = new qGen.Where();
                SelDesde.WhereClause.AddWithValue("compra", 1);
                SelDesde.WhereClause.AddWithValue("anulada", 0);
                SelDesde.WhereClause.AddWithValue("id_cliente", EntradaProveedor.ValueInt);
                SelDesde.WhereClause.AddWithValue("tipo_fac", EntradaTipo.TextKey);
                SelDesde.WhereClause.AddWithValue("pv", EntradaPV.ValueInt);
                SelDesde.WhereClause.AddWithValue("numero", EntradaNumero.ValueInt);

                int IdFactura = this.Connection.FieldInt(SelDesde);
                if (IdFactura > 0)
                {
                    Res.Success  = false;
                    Res.Message += "Ya existe un comprobante con ese número. Por favor verifique los datos e intente nuevamente. Si el comprobante cargado anteriormente tiene un error de carga, deberá anularlo antes de cargarlo nuevamente." + Environment.NewLine;
                }
            }

            if (EntradaPercepcionIIBB.ValueDecimal > 0 && EntradaLocalidad.ValueInt == 0)
            {
                Res.Success = false;
                Res.Message = "Por favor seleccione lugar de IIBB.";
            }

            return(Res);
        }
Exemplo n.º 20
0
        public override Lfx.Types.OperationResult Cargar()
        {
            Lfx.Types.OperationResult Res = base.Cargar();
            if (Res.Success)
            {
                if (Registro["id_caja"] == null)
                {
                    m_Caja = null;
                }
                else
                {
                    m_Caja = new Lbl.Cajas.Caja(this.Connection, System.Convert.ToInt32(Registro["id_caja"]));
                }
            }

            return(Res);
        }
Exemplo n.º 21
0
        public override Lfx.Types.OperationResult ValidarControl()
        {
            Lfx.Types.OperationResult Res = base.ValidarControl();

            if (EntradaHaciaSituacion.Visible && EntradaHaciaSituacion.ValueInt == 0)
            {
                Res.Success  = false;
                Res.Message += "Por favor seleccione un depósito de destino." + Environment.NewLine;
            }

            if (EntradaProveedor.ValueInt == 0)
            {
                Res.Success  = false;
                Res.Message += "Por favor seleccione el proveedor." + Environment.NewLine;
            }

            return(Res);
        }
Exemplo n.º 22
0
 private void DepositarPagar_Click(object sender, System.EventArgs e)
 {
     if (this.Emitidos == false)
     {
         //Depositar
         Lbl.ListaIds Codigos = this.CodigosSeleccionados;
         if (Codigos == null || Codigos.Count == 0)
         {
             Lui.Forms.MessageBox.Show("Por favor seleccione uno o más cheques.", "Error");
         }
         else
         {
             Lui.Forms.YesNoDialog Pregunta = new Lui.Forms.YesNoDialog("Al depositar un cheque en una cuenta bancaria propia, puede marcarlo como depositado para control interno.\nSirve sólamente para depositos en cajas propias. Para depósitos en cajas de terceros utilice la opción 'Efectivizar'.", "¿Desea marcar los cheques seleccionados como depositados?");
             if (Pregunta.ShowDialog() == DialogResult.OK)
             {
                 using (IDbTransaction Trans = this.Connection.BeginTransaction()) {
                     qGen.Update Depo = new qGen.Update("bancos_cheques");
                     Depo.ColumnValues.AddWithValue("estado", 5);
                     Depo.WhereClause = new qGen.Where();
                     Depo.WhereClause.AddWithValue("estado", 0);
                     Depo.WhereClause.AddWithValue("id_cheque", qGen.ComparisonOperators.In, Codigos);
                     this.Connection.ExecuteNonQuery(Depo);
                     Trans.Commit();
                 }
                 foreach (System.Windows.Forms.ListViewItem itm in Listado.Items)
                 {
                     if (itm.Checked)
                     {
                         itm.Checked = false;
                     }
                 }
                 this.RefreshList();
             }
         }
     }
     else
     {
         Lfx.Types.OperationResult Res = this.Pagar();
         if (Res.Success == false && Res.Message != null)
         {
             Lfx.Workspace.Master.RunTime.Toast(Res.Message, "Error");
         }
     }
 }
Exemplo n.º 23
0
        public static Lfx.Types.OperationResult RegisterComponent(IComponent componentInfo)
        {
            // Simplemente lo cargo... eso ya registra los tipos
            if (ComponentesCargados.ContainsKey(componentInfo.EspacioNombres) == false)
            {
                Lfx.Types.OperationResult Res = componentInfo.Load();
                if (Res.Success == false)
                {
                    return(Res);
                }

                // Primero ejecuto la función Try, para decidir si cargo el componenten o no
                Lfx.Types.OperationResult TryResult = componentInfo.Funciones["Try"].Run() as Lfx.Types.OperationResult;

                if (TryResult != null && TryResult.Success)
                {
                    ComponentesCargados.Add(componentInfo.EspacioNombres, componentInfo);
                    if (componentInfo.Funciones != null)
                    {
                        foreach (FunctionInfo Func in componentInfo.Funciones)
                        {
                            Func.Load();
                            Functiones.Add(Func);
                        }
                    }

                    if (componentInfo.TiposRegistrados != null)
                    {
                        foreach (IRegisteredType Regt in componentInfo.TiposRegistrados)
                        {
                            RegisteredTypes.Add(Regt);
                        }
                    }
                }
                else
                {
                    return(TryResult);
                }
            }

            return(new Lfx.Types.SuccessOperationResult());
        }
Exemplo n.º 24
0
        public override Lfx.Types.OperationResult RefreshList()
        {
            Lfx.Types.OperationResult mostrarReturn = base.RefreshList();

            if (mostrarReturn.Success == true)
            {
                if (m_Agrupar.Length >= 10 && m_Agrupar.Substring(0, 10) == "articulos.")
                {
                    string Filtro = FiltrosComunes();
                    return(MostrarPorMarcaOProveedor(Filtro));
                }
                else
                {
                    string Filtro = FiltrosComunes();
                    return(MostrarNormal(Filtro));
                }
            }

            return(mostrarReturn);
        }
Exemplo n.º 25
0
        public override Lfx.Types.OperationResult Imprimir()
        {
            // Determino la impresora que le corresponde
            if (this.Impresora == null)
            {
                this.Impresora = this.ObtenerImpresora();
            }

            if (this.Plantilla == null)
            {
                this.Plantilla = this.ObtenerPlantilla();
            }

            // Es una plantilla común... se imprime con Lázaro
            Lfx.Types.OperationResult Res = base.Imprimir();

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

            if (Res.Success)
            {
                Lbl.Sys.Config.ActionLog(this.Connection, Lbl.Sys.Log.Acciones.Print, this.Elemento, null);
            }
            else
            {
                Lbl.Sys.Config.ActionLog(this.Connection, Lbl.Sys.Log.Acciones.PrintFail, this.Elemento, Res.Message);
            }

            if (Trans != null)
            {
                Trans.Commit();
                Trans.Dispose();
                Trans = null;
            }

            return(Res);
        }
Exemplo n.º 26
0
        private void Convertir()
        {
            Comprobantes.Convertir FormConvertir = new Comprobantes.Convertir();
            FormConvertir.OrigenTipo   = this.Tipo.Nomenclatura;
            FormConvertir.DestinoTipo  = "F";
            FormConvertir.OrigenNombre = this.Elemento.ToString();

            if (FormConvertir.ShowDialog() == DialogResult.OK)
            {
                string ConvertirEnTipo = FormConvertir.DestinoTipo;
                if (ConvertirEnTipo == "F" || ConvertirEnTipo == "NC" || ConvertirEnTipo == "ND")
                {
                    if (this.Tipo.Letra.Length > 0 && "ABCEM".IndexOf(this.Tipo.Letra) >= 0)
                    {
                        ConvertirEnTipo += this.Tipo.Letra;
                    }
                    else
                    {
                        Lbl.Comprobantes.ComprobanteConArticulos Compr = this.Elemento as Lbl.Comprobantes.ComprobanteConArticulos;
                        if (Compr != null && Compr.Cliente != null && Compr.Cliente.LetraPredeterminada().Length > 0)
                        {
                            ConvertirEnTipo += Compr.Cliente.LetraPredeterminada();
                        }
                        else
                        {
                            ConvertirEnTipo += "B";
                        }
                    }
                }
                Lfx.Types.OperationResult Resultado = ConvertirEn(ConvertirEnTipo);

                if (Resultado.Success == false)
                {
                    Lui.Forms.MessageBox.Show(Resultado.Message, "Error");
                }
            }
        }
Exemplo n.º 27
0
 private void BotonEfectivizar_Click(object sender, System.EventArgs e)
 {
     if (this.Emitidos == false)
     {
         //Depositar
         Lbl.ListaIds Codigos = this.CodigosSeleccionados;
         if (Codigos == null || Codigos.Count == 0)
         {
             Lui.Forms.MessageBox.Show("Por favor seleccione uno o más cheques.", "Error");
         }
         else
         {
             Lfx.Types.OperationResult Res = this.Efectivizar();
             if (Res.Success == false && Res.Message != null)
             {
                 Lfx.Workspace.Master.RunTime.Toast(Res.Message, "Error");
             }
         }
     }
     else
     {
         Lfx.Workspace.Master.RunTime.Toast("Esta opción sólo sirve para cheques recibidos.", "Aviso");
     }
 }
Exemplo n.º 28
0
        public override Lfx.Types.OperationResult ValidarControl()
        {
            Lfx.Types.OperationResult Res = base.ValidarControl();

            if (Res.Success == true)
            {
                if (EntradaRemito.Text.Length > 0)
                {
                    int RemitoNumero, RemitoPv;
                    if (EntradaRemito.Text.IndexOfAny(new char[] { '-' }) >= 0)
                    {
                        // El número de remito tiene guión
                        string[] Partes = EntradaRemito.Text.Split(new char[] { '-' });
                        RemitoNumero = Lfx.Types.Parsing.ParseInt(Partes[0]);
                        RemitoPv     = Lfx.Types.Parsing.ParseInt(Partes[1]);
                    }
                    else
                    {
                        // El número de remito no tiene guión, asumo el mismo PV que la factura
                        RemitoNumero = EntradaRemito.ValueInt;
                        RemitoPv     = EntradaPV.ValueInt;
                    }

                    int RemitoId = this.Connection.FieldInt("SELECT id_comprob FROM comprob WHERE compra=0 AND tipo_fac!='R' AND pv=" + RemitoPv.ToString() + " AND numero=" + RemitoNumero.ToString() + " AND impresa>0 AND anulada=0");
                    if (RemitoId == 0)
                    {
                        Res.Success  = false;
                        Res.Message += "El número de remito no es válido." + Environment.NewLine;
                    }
                }

                Lbl.Pagos.FormaDePago FormaPago = EntradaFormaPago.Elemento as Lbl.Pagos.FormaDePago;
                Lbl.Comprobantes.Tipo Tipo      = new Lbl.Comprobantes.Tipo(this.Connection, EntradaTipo.TextKey);
                if (FormaPago == null && Tipo.EsFacturaOTicket)
                {
                    Res.Success  = false;
                    Res.Message += "Por favor seleccione la forma de pago." + Environment.NewLine;
                }
                if (EntradaCliente.ValueInt == 999 && FormaPago != null && FormaPago.Tipo == Lbl.Pagos.TiposFormasDePago.CuentaCorriente)
                {
                    Res.Success  = false;
                    Res.Message += @"El cliente ""Consumidor final"" no puede tener una cuenta corriente. Deber facturar a nombre de un cliente identificado para poder usar la cuenta corriente." + Environment.NewLine;
                }

                // En Argentina, obligo a ingresar la CUIT
                Lbl.Personas.Persona Cliente = EntradaCliente.Elemento as Lbl.Personas.Persona;
                if (Cliente == null)
                {
                    Res.Success  = false;
                    Res.Message += "Por favor seleccione un cliente." + Environment.NewLine;
                }
                else if (Lbl.Sys.Config.Pais.Id == 1 && Cliente.SituacionTributaria != null && (Cliente.SituacionTributaria.Id == 2 || Cliente.SituacionTributaria.Id == 3))
                {
                    if (Cliente.ClaveTributaria == null || Cliente.ClaveTributaria.EsValido() == false)
                    {
                        Res.Success  = false;
                        Res.Message += "El cliente debe tener una clave tributaria válida." + Environment.NewLine;
                    }
                }
            }
            return(Res);
        }
Exemplo n.º 29
0
        public override Lfx.Types.OperationResult BeforePrint()
        {
            Lbl.Comprobantes.ComprobanteConArticulos Comprob = this.Elemento as Lbl.Comprobantes.ComprobanteConArticulos;
            if (Comprob.Articulos.Count >= 1 && (Comprob.Articulos[0].Cantidad < 0 || Comprob.Articulos[0].ImporteUnitario < 0))
            {
                return(new Lfx.Types.FailureOperationResult("El primer ítem de la factura no puede ser negativo. Utilice los ítem negativos en último lugar."));
            }

            Comprob.Cliente.Cargar();

            if (Comprob.FormaDePago == null)
            {
                return(new Lfx.Types.FailureOperationResult("Por favor seleccione la forma de pago."));
            }

            if (Comprob.Cliente == null)
            {
                return(new Lfx.Types.FailureOperationResult("Por favor seleccione un cliente."));
            }

            if (Comprob.Tipo == null)
            {
                return(new Lfx.Types.FailureOperationResult("Por favor seleccione el tipo de comprobante."));
            }

            if (Lbl.Sys.Config.Pais.Id == 1)
            {
                // Verificaciones especiales para Argentina
                if (Comprob.Tipo.EsFacturaNCoND && Comprob.Cliente.SituacionTributaria != null && Comprob.Tipo.Letra != Comprob.Cliente.LetraPredeterminada())
                {
                    Lui.Forms.YesNoDialog Pregunta = new Lui.Forms.YesNoDialog(@"La situación tributaria del cliente y el tipo de comprobante no se corresponden.
Un cliente " + Comprob.Cliente.SituacionTributaria.ToString() + @" debería llevar un comprobante tipo " + Comprob.Cliente.LetraPredeterminada() + @". No debería continuar con la impresión. 
¿Desea continuar de todos modos?", "Tipo de comprobante incorrecto");
                    Pregunta.DialogButtons = Lui.Forms.DialogButtons.YesNo;
                    if (Pregunta.ShowDialog() == DialogResult.Cancel)
                    {
                        return(new Lfx.Types.FailureOperationResult("Corrija la situación tributaria del cliente o el tipo de comprobante."));
                    }
                }

                if (Comprob.Tipo.Letra.ToUpperInvariant() == "A")
                {
                    if (Comprob.Cliente.ClaveTributaria == null || Comprob.Cliente.ClaveTributaria.EsValido() == false)
                    {
                        return(new Lfx.Types.FailureOperationResult("El cliente no tiene una CUIT válida. Por favor edite el cliente y escriba una CUIT válida."));
                    }
                }
                else if (Comprob.Tipo.Letra == "B")
                {
                    //Si es factura B de más de $ 1000, debe llevar el Nº de DNI
                    if (Comprob.Total >= 1000 && Comprob.Cliente.NumeroDocumento.Length < 5 &&
                        (Comprob.Cliente.ClaveTributaria == null || Comprob.Cliente.ClaveTributaria.EsValido() == false))
                    {
                        return(new Lfx.Types.FailureOperationResult("Para Facturas B de $ 1.000 o más debe proporcionar el número de DNI/CUIT del cliente."));
                    }
                    //Si es factura B de más de $ 1000, debe llevar domicilio
                    if (Comprob.Total >= 1000 && Comprob.Cliente.Domicilio.Length < 1)
                    {
                        return(new Lfx.Types.FailureOperationResult("Para Facturas B de $ 1.000 o más debe proporcionar el domicilio del cliente."));
                    }
                }
            }

            if (EntradaProductos.MostrarExistencias && this.Tipo.MueveExistencias < 0 && Comprob.HayExistencias() == false)
            {
                Lui.Forms.YesNoDialog OPregunta = new Lui.Forms.YesNoDialog("Las existencias actuales no son suficientes para cubrir la operación que intenta realizar.\n¿Desea continuar de todos modos?", "No hay existencias suficientes");
                OPregunta.DialogButtons = Lui.Forms.DialogButtons.YesNo;
                if (OPregunta.ShowDialog() == DialogResult.Cancel)
                {
                    return(new Lfx.Types.FailureOperationResult("No se imprimir el comprobante por falta de existencias."));
                }
            }

            if (Comprob.Cliente.Id != 999 && (Comprob.Tipo.EsFactura || Comprob.Tipo.EsNotaDebito))
            {
                decimal SaldoCtaCte = Comprob.Cliente.CuentaCorriente.ObtenerSaldo(false);

                if (Comprob.FormaDePago != null && Comprob.FormaDePago.Tipo == Lbl.Pagos.TiposFormasDePago.CuentaCorriente)
                {
                    decimal LimiteCredito = Comprob.Cliente.LimiteCredito;

                    if (LimiteCredito == 0)
                    {
                        LimiteCredito = Lfx.Types.Parsing.ParseCurrency(Lfx.Workspace.Master.CurrentConfig.ReadGlobalSetting <string>("Sistema.Cuentas.LimiteCreditoPredet", "0"));
                    }

                    if (LimiteCredito != 0 && (Comprob.Total + SaldoCtaCte) > LimiteCredito)
                    {
                        return(new Lfx.Types.FailureOperationResult("El valor de la factura y/o el saldo en cuenta corriente supera el límite de crédito de este cliente."));
                    }
                }
                else
                {
                    if (SaldoCtaCte < 0)
                    {
                        using (SaldoEnCuentaCorriente FormularioError = new SaldoEnCuentaCorriente()) {
                            switch (FormularioError.ShowDialog())
                            {
                            case DialogResult.Yes:
                                //Corregir el problema
                                this.EntradaFormaPago.ValueInt = 3;
                                this.Save();
                                Comprob.FormaDePago.Tipo = Lbl.Pagos.TiposFormasDePago.CuentaCorriente;
                                break;

                            case DialogResult.No:
                                //Continuar. No corregir el problema.
                                break;

                            default:
                                //Cancelar y volver a la edición.
                                return(new Lfx.Types.CancelOperationResult());
                            }
                        }
                    }
                }
            }

            if (Comprob.PV < 1)
            {
                return(new Lfx.Types.FailureOperationResult("Por favor escriba un punto de venta válido."));
            }

            if (Lbl.Comprobantes.PuntoDeVenta.TodosPorNumero.ContainsKey(Comprob.PV) == false)
            {
                // No existe el PV... vacío la caché antes intentar de nuevo y dar un error
                Lbl.Comprobantes.PuntoDeVenta.TodosPorNumero.Clear();
                if (Lbl.Comprobantes.PuntoDeVenta.TodosPorNumero.ContainsKey(Comprob.PV) == false)
                {
                    return(new Lfx.Types.FailureOperationResult("El punto de venta no existe. Si desea definir un nuevo punto de venta, utilice el menú Comprobantes -> Tablas -> Puntos de venta."));
                }
            }

            Lbl.Comprobantes.PuntoDeVenta Pv = Lbl.Comprobantes.PuntoDeVenta.TodosPorNumero[Comprob.PV];
            if (Pv.Tipo == Lbl.Comprobantes.TipoPv.Talonario)
            {
                Lbl.Impresion.Impresora Impresora = Comprob.ObtenerImpresora();

                if (Pv.CargaManual && (Impresora == null || Impresora.CargaPapel == Lbl.Impresion.CargasPapel.Automatica))
                {
                    Lui.Printing.ManualFeedDialog FormularioCargaManual = new Lui.Printing.ManualFeedDialog();
                    FormularioCargaManual.DocumentName = Comprob.Tipo.ToString() + " " + Comprob.PV.ToString("0000") + "-" + Lbl.Comprobantes.Numerador.ProximoNumero(Comprob).ToString("00000000");
                    // 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(new Lfx.Types.CancelOperationResult());
                    }
                }
            }

            if (Comprob.Tipo.MueveExistencias != 0)
            {
                Lfx.Types.OperationResult Res = Comprob.VerificarSeries();
                if (Res.Success == false)
                {
                    return(Res);
                }
            }

            return(base.BeforePrint());
        }
Exemplo n.º 30
0
        private void LowerPanel_ButtonClick(object sender, EventArgs e)
        {
            string ActionName = null;

            Lui.Forms.Button SenderButton = sender as Lui.Forms.Button;
            if (SenderButton != null)
            {
                ActionName = SenderButton.Name;
            }
            else
            {
                Lui.Forms.LinkLabel SenderLinkLabel = sender as Lui.Forms.LinkLabel;
                if (SenderLinkLabel != null)
                {
                    ActionName = SenderLinkLabel.Name;
                }
            }

            if (ActionName != null)
            {
                // doy la oportunidad de que lo procese el ControlUnico.
                Lfx.Types.OperationResult Res = this.ControlUnico.PerformFormAction(ActionName);
                if (Res != null)
                {
                    if (Res.Success == false && Res.Cancel == false && Res.Message != null)
                    {
                        Lfx.Workspace.Master.RunTime.Toast(Res.Message, "Error");
                    }
                }
                else
                {
                    // No lo procesó, así que puedo hacerlo yo
                    switch (ActionName)
                    {
                    case "aceptar":
                        Guardar();
                        break;

                    case "cancelar":
                        Cancelar();
                        break;

                    case "imprimir":
                        Imprimir();
                        break;

                    case "comentarios":
                        EditarComentarios();
                        break;

                    case "historial":
                        MostrarHistorial();
                        break;

                    case "panelextendido":
                        EditarPanelExtendido();
                        break;
                    }
                }
            }
        }