private void EntradaArticulo_TextChanged(object sender, System.EventArgs e)
        {
            if (this.Connection == null)
            {
                return;
            }

            EntradaUnitario.TabStop = EntradaArticulo.IsFreeText;

            if (this.Elemento != EntradaArticulo.Elemento || EntradaArticulo.IsFreeText)
            {
                this.Elemento = EntradaArticulo.Elemento;
                if (this.Articulo != null)
                {
                    this.m_Alicuota = this.Articulo.ObtenerAlicuota();
                }
                else if (EntradaArticulo.IsFreeText)
                {
                    this.m_Alicuota = Lbl.Sys.Config.Empresa.AlicuotaPredeterminada;
                }

                this.CambiarArticulo(this.Articulo);
            }

            this.DatosSeguimiento = null;
            m_MasTarBar           = this.Changed = true;
            this.OnTextChanged(EventArgs.Empty);
            if (EntradaArticulo.Text != "0" && !EntradaArticulo.IsFreeText)
            {
                SendKeys.Send("{tab}");
            }
        }
Beispiel #2
0
        private void EntradaCategoriaMarcaModeloSerie_TextChanged(System.Object sender, System.EventArgs e)
        {
            Lbl.Articulos.Categoria Cat = EntradaCategoria.Elemento as Lbl.Articulos.Categoria;
            if (Cat != null)
            {
                Lbl.Impuestos.Alicuota Alic = Cat.ObtenerAlicuota();
                if (Alic != null)
                {
                    EtiquetaAlicuota.Text = "(más " + Alic.ToString() + ")";
                }
                else
                {
                    EtiquetaAlicuota.Text = "";
                }
            }

            if (CustomName == false)
            {
                string NombreSing = "";
                if (Cat != null)
                {
                    NombreSing = Cat.NombreSingular;
                }
                string Texto = (NombreSing + " " + EntradaMarca.TextDetail + " " + EntradaModelo.Text + " " + EntradaSerie.Text).Trim();
                if (Texto.Length > 0)
                {
                    EntradaNombre.Text = Texto;
                }
            }

            EntradaSeguimiento_TextChanged(sender, e);
        }
Beispiel #3
0
        protected Lbl.Impuestos.Alicuota ObtenerAlicuota()
        {
            var Categ = EntradaCategoria.Elemento as Lbl.Articulos.Categoria;

            Lbl.Impuestos.Alicuota Res = null;

            if (Categ != null)
            {
                if (Categ.Alicuota != null)
                {
                    Res = Categ.Alicuota;
                }
                else if (Categ.Rubro != null && Categ.Rubro.Alicuota != null)
                {
                    Res = Categ.Rubro.Alicuota;
                }
                else
                {
                    Res = Lbl.Sys.Config.Empresa.AlicuotaPredeterminada;
                }
            }
            else
            {
                Res = Lbl.Sys.Config.Empresa.AlicuotaPredeterminada;
            }

            return(Res);
        }
Beispiel #4
0
        public override void ActualizarElemento()
        {
            Lbl.Impuestos.Alicuota Alic = this.Elemento as Lbl.Impuestos.Alicuota;

            Alic.Nombre        = EntradaNombre.Text;
            Alic.Porcentaje    = EntradaPorcentaje.Text.ParseDecimal();
            Alic.ImporteMinimo = EntradaImporteMinimo.Text.ParseCurrency();

            base.ActualizarElemento();
        }
Beispiel #5
0
        public override void ActualizarControl()
        {
            Lbl.Impuestos.Alicuota Alic = this.Elemento as Lbl.Impuestos.Alicuota;

            EntradaNombre.Text        = Alic.Nombre;
            EntradaPorcentaje.Text    = Alic.Porcentaje.ToString();
            EntradaImporteMinimo.Text = Alic.ImporteMinimo.ToString();

            base.ActualizarControl();
        }
        /// <summary>
        /// Ídem ImporteIvaAlicuota, pero con el precio del artículo incluído.
        /// </summary>
        public decimal ImporteConIvaFinalAlicuota(int idAlicuota)
        {
            Lbl.Impuestos.Alicuota Alic = this.ObtenerAlicuota();

            if (Alic != null && Alic.Id == idAlicuota)
            {
                if (this.ComprobanteDiscriminaIva())
                {
                    return((this.ImporteUnitario + this.ImporteIvaUnitario) * this.Cantidad * this.FactorDescuentoRecargo);
                }
                else
                {
                    return(this.ImporteUnitario * this.Cantidad * this.FactorDescuentoRecargo);
                }
            }
            else
            {
                return(0m);
            }
        }
Beispiel #7
0
        private void EntradaArticulo_TextChanged(object sender, System.EventArgs e)
        {
            if (this.Connection == null)
            {
                return;
            }

            EntradaUnitario.TabStop = EntradaArticulo.IsFreeText;

            if (this.Elemento != EntradaArticulo.Elemento || EntradaArticulo.IsFreeText)
            {
                this.Elemento = EntradaArticulo.Elemento;
                if (this.Articulo != null)
                {
                    this.m_Alicuota = this.Articulo.ObtenerAlicuota();
                }
                this.CambiarArticulo(this.Articulo);
            }

            this.DatosSeguimiento = null;
            this.Changed          = true;
            this.OnTextChanged(EventArgs.Empty);
        }
        internal void Refrescar()
        {
            Listado.Items.Clear();
            if (this.Connection != null)
            {
                if (m_Table.Length > 0 && m_KeyField.Length > 0 && m_DetailField != null && m_DetailField.Length > 0)
                {
                    string TextoSql    = null;
                    string TextoBuscar = EntradaBuscar.Text;

                    TextoBuscar = this.Connection.EscapeString(TextoBuscar.Replace("  ", " ").Trim());

                    if (m_Table.Length >= 7 && m_Table.Substring(0, 7) == "SELECT ")
                    {
                        TextoSql = m_Table;
                    }
                    else
                    {
                        TextoSql = "SELECT " + m_KeyField + ", " + m_DetailField;
                        if (m_ExtraDetailFields != null && m_ExtraDetailFields.Length > 0)
                        {
                            if (m_Table == "articulos" && m_ExtraDetailFields.IndexOf("pvp") != -1)
                            {
                                Lbl.Impuestos.Alicuota Ali = Lbl.Sys.Config.Empresa.AlicuotaPredeterminada;
                                string newCampo            = "if (id_categoria is null,pvp * (1+" + Ali.Porcentaje.ToString() + "/100),pvpIva(id_articulo)) as pvp";
                                TextoSql += ", " + m_ExtraDetailFields.Replace("pvp", newCampo);
                            }
                            else
                            {
                                TextoSql += ", " + m_ExtraDetailFields;
                            }
                        }

                        // Si es la tabla de artículos, muestro algunas cosas más
                        if (m_Table == "articulos")
                        {
                            TextoSql += ", control_stock, stock_actual, pedido, destacado";
                        }

                        TextoSql += " FROM " + m_Table;
                        bool AgregueWhere = false;
                        if (TextoBuscar != null && TextoBuscar.Length > 1)
                        {
                            TextoSql    += " WHERE (" + m_DetailField + " LIKE '%" + TextoBuscar.Replace(" ", "%' AND " + m_DetailField + " LIKE '%") + "%'";
                            AgregueWhere = true;
                        }
                        else if (TextoBuscar != null && TextoBuscar.Length > 0)
                        {
                            TextoSql    += " WHERE (" + m_DetailField + " LIKE '" + this.Connection.EscapeString(TextoBuscar) + "%'";
                            AgregueWhere = true;
                        }

                        if (m_ExtraDetailFields != null && m_ExtraDetailFields.Length > 0 && TextoBuscar != null && TextoBuscar.Length > 1)
                        {
                            string TempExtraDetailFields = m_ExtraDetailFields;
                            string TempWhere             = "";
                            string ExtraField            = Lfx.Types.Strings.GetNextToken(ref TempExtraDetailFields, ",");
                            while (ExtraField.Length > 0)
                            {
                                if (TempWhere.Length == 0)
                                {
                                    TempWhere += ExtraField + " LIKE '%" + TextoBuscar + "%'";
                                }
                                else
                                {
                                    TempWhere += " OR " + ExtraField + " LIKE '%" + TextoBuscar + "%'";
                                }
                                ExtraField = Lfx.Types.Strings.GetNextToken(ref TempExtraDetailFields, ",");
                            }
                            TextoSql += " OR (" + TempWhere + ")";
                            if (m_Table == "articulos")
                            {
                                TextoSql += " OR (id_articulo='" + TextoBuscar + "')";
                            }
                        }
                        if (AgregueWhere)
                        {
                            TextoSql += ") ";
                        }

                        if (m_Filter != null && m_Filter.Length > 0)
                        {
                            if (AgregueWhere)
                            {
                                TextoSql += " AND (" + m_Filter + ")";
                            }
                            else
                            {
                                TextoSql += " WHERE " + m_Filter;
                            }
                        }

                        if (m_Table == "articulos")
                        {
                            TextoSql += " ORDER BY IF(stock_actual+pedido>0,0,1), " + m_DetailField;
                        }
                        else
                        {
                            TextoSql += " ORDER BY " + m_DetailField;
                        }

                        // TODO: Código dependiente de MySql/PostgreSql. Pasar a qGen.SqlCommandBuilder
                        if (Lfx.Workspace.Master.SlowLink)
                        {
                            TextoSql += " LIMIT 40";
                        }
                        else
                        {
                            TextoSql += " LIMIT 100";
                        }
                    }

                    System.Data.DataTable TableRes = this.Connection.Select(TextoSql);
                    Listado.SuspendLayout();
                    Listado.BeginUpdate();
                    foreach (System.Data.DataRow OrgRow in TableRes.Rows)
                    {
                        Lfx.Data.Row RowRes = (Lfx.Data.Row)OrgRow;
                        ListViewItem itm    = Listado.Items.Add(RowRes.Fields[m_KeyField].ValueInt.ToString("00000"));
                        itm.SubItems.Add(new ListViewItem.ListViewSubItem(itm, RowRes.Fields[m_DetailField].ValueString));
                        if (m_ExtraDetailFields != null && m_ExtraDetailFields.Length > 0)
                        {
                            string TempExtraDetailFields = m_ExtraDetailFields;
                            string Campo = Lfx.Types.Strings.GetNextToken(ref TempExtraDetailFields, ",").Trim();
                            while (Campo.Length > 0)
                            {
                                if (RowRes.Fields[Campo].Value == null)
                                {
                                    itm.SubItems.Add("");
                                }
                                else
                                {
                                    switch (RowRes[Campo].GetType().ToString())
                                    {
                                    case "System.Single":
                                    case "System.Double":
                                    case "System.Decimal":
                                        itm.SubItems.Add(Lfx.Types.Formatting.FormatNumber(RowRes.Fields[Campo].ValueDecimal, 4));
                                        break;

                                    default:
                                        itm.SubItems.Add(System.Convert.ToString(RowRes.Fields[Campo].Value));
                                        break;
                                    }
                                }

                                Campo = Lfx.Types.Strings.GetNextToken(ref TempExtraDetailFields, ",").Trim();
                            }
                        }
                        // TODO: que tome m_ExtraDetailFields esto en cuenta
                        if (m_Table == "articulos")
                        {
                            if (System.Convert.ToInt32(RowRes["control_stock"]) != 0 && System.Convert.ToDouble(RowRes["stock_actual"]) <= 0)
                            {
                                // No hay stock.
                                if (System.Convert.ToDouble(RowRes["pedido"]) + System.Convert.ToDouble(RowRes["stock_actual"]) > 0)
                                {
                                    // Pero hay pedido suficiente para cubrir un stock negativo y sobra
                                    itm.ForeColor = System.Drawing.Color.OrangeRed;
                                    itm.Font      = new Font(itm.Font, FontStyle.Regular);
                                }
                                else
                                {
                                    itm.ForeColor = System.Drawing.Color.Red;
                                    itm.Font      = new Font(itm.Font, FontStyle.Strikeout);
                                }
                            }
                            else if (System.Convert.ToInt32(RowRes["destacado"]) != 0)
                            {
                                itm.ForeColor = System.Drawing.Color.DarkGreen;
                                itm.Font      = new Font(itm.Font, FontStyle.Regular);
                            }
                        }
                    }
                    Listado.EndUpdate();
                    Listado.ResumeLayout();
                    if (Listado.Items.Count > 0 && Listado.SelectedItems.Count == 0)
                    {
                        Listado.Items[0].Selected = true;
                    }
                    MostrarEtiquetas();
                }
            }
        }
Beispiel #9
0
        public override Lfx.Types.OperationResult Guardar()
        {
            qGen.IStatement Comando;

            if (this.Existe == false)
            {
                Comando = new qGen.Insert(this.TablaDatos);
                Comando.ColumnValues.AddWithValue("fecha", new qGen.SqlExpression("NOW()"));
            }
            else
            {
                Comando             = new qGen.Update(this.TablaDatos);
                Comando.WhereClause = new qGen.Where(this.CampoId, this.Id);
            }

            Comando.ColumnValues.AddWithValue("nombre", this.Nombre);
            Comando.ColumnValues.AddWithValue("signo", this.Simbolo);
            Comando.ColumnValues.AddWithValue("iso", this.NomenclaturaIso);
            Comando.ColumnValues.AddWithValue("estado", 1);
            Comando.ColumnValues.AddWithValue("cotizacion", this.Cotizacion);
            Comando.ColumnValues.AddWithValue("decimales", this.Decimales);

            this.AgregarTags(Comando);

            this.Connection.ExecuteNonQuery(Comando);

            if (this.ActualizarProductos == 1)
            {
                System.Data.DataTable  dtArticulos = this.Connection.Select("SELECT id_articulo,cotiza,id_moneda,id_categoria,id_margen,costo FROM articulos WHERE id_moneda=" + this.Id + " AND conotramoneda=1");
                Lbl.Impuestos.Alicuota Ali         = Lbl.Sys.Config.Empresa.AlicuotaPredeterminada;
                foreach (System.Data.DataRow dr in dtArticulos.Rows)
                {
                    qGen.IStatement cmdUpdateProd = new qGen.Update("articulos");
                    cmdUpdateProd.WhereClause = new qGen.Where("id_articulo", dr["id_articulo"]);
                    cmdUpdateProd.ColumnValues.AddWithValue("cotiza", this.Cotizacion);

                    decimal costoActual = 0;
                    if (!decimal.TryParse(dr["costo"].ToString(), out costoActual))
                    {
                        costoActual = 0;
                    }

                    int idMargen = -1;
                    if (!int.TryParse(dr["id_margen"].ToString(), out idMargen))
                    {
                        idMargen = -1;
                    }

                    decimal MargenCompleto = 0;
                    if (idMargen != -1)
                    {
                        Lbl.Articulos.Margen Margen = new Articulos.Margen(this.Connection, idMargen);
                        if (Margen != null)
                        {
                            MargenCompleto = Math.Round(Margen.Porcentaje, Lbl.Sys.Config.Moneda.DecimalesFinal);
                        }
                    }
                    decimal margenCotizado = 1;
                    if (MargenCompleto != 0)
                    {
                        margenCotizado = 1 + MargenCompleto / 100;
                    }
                    decimal pvpNew = (costoActual * this.Cotizacion) * margenCotizado;

                    cmdUpdateProd.ColumnValues.AddWithValue("pvp", pvpNew);
                    this.Connection.ExecuteNonQuery(cmdUpdateProd);

                    //Anulo el estado anterior de artículo cotiza.
                    qGen.IStatement cot_upd_Comando = new qGen.Update("articulos_cotiza");
                    cot_upd_Comando.WhereClause = new qGen.Where("id_articulo", dr["id_articulo"]);
                    cot_upd_Comando.ColumnValues.AddWithValue("estado", 0);
                    this.Connection.ExecuteNonQuery(cot_upd_Comando);

                    //Agrego nuevo estado a artículo cotiza
                    qGen.IStatement cot_ins_Comando = new qGen.Insert("articulos_cotiza");
                    cot_ins_Comando.ColumnValues.AddWithValue("id_articulo", dr["id_articulo"]);
                    cot_ins_Comando.ColumnValues.AddWithValue("id_moneda", this.Id);
                    cot_ins_Comando.ColumnValues.AddWithValue("cotiza", this.Cotizacion);
                    cot_ins_Comando.ColumnValues.AddWithValue("estado", 1);
                    cot_ins_Comando.ColumnValues.AddWithValue("fecha", new qGen.SqlExpression("NOW()"));
                    this.Connection.ExecuteNonQuery(cot_ins_Comando);
                }
            }

            return(base.Guardar());
        }
Beispiel #10
0
        public static void CambiarPais(Lbl.Entidades.Pais nuevoPais)
        {
            Pais = nuevoPais;

            Lfx.Workspace.Master.CurrentConfig.WriteGlobalSetting("Sistema.Pais", nuevoPais.Id);

            // Configuro las alícuotas de IVA, normal y reducida
            Lbl.Impuestos.Alicuota Alic1 = new Lbl.Impuestos.Alicuota(Lfx.Workspace.Master.MasterConnection, 1);
            Alic1.Nombre     = "IVA tasa normal";
            Alic1.Porcentaje = nuevoPais.Iva1;
            Alic1.Guardar();

            Lbl.Impuestos.Alicuota Alic2 = new Lbl.Impuestos.Alicuota(Lfx.Workspace.Master.MasterConnection, 2);
            Alic2.Nombre     = "IVA tasa reducida";
            Alic2.Porcentaje = nuevoPais.Iva2;
            Alic2.Guardar();

            Lbl.Comprobantes.Tipo TipoFA  = new Comprobantes.Tipo(Lfx.Workspace.Master.MasterConnection, 1);
            Lbl.Comprobantes.Tipo TipoFB  = new Comprobantes.Tipo(Lfx.Workspace.Master.MasterConnection, 2);
            Lbl.Comprobantes.Tipo TipoNCA = new Comprobantes.Tipo(Lfx.Workspace.Master.MasterConnection, 11);
            Lbl.Comprobantes.Tipo TipoNCB = new Comprobantes.Tipo(Lfx.Workspace.Master.MasterConnection, 12);
            Lbl.Comprobantes.Tipo TipoNDA = new Comprobantes.Tipo(Lfx.Workspace.Master.MasterConnection, 21);
            Lbl.Comprobantes.Tipo TipoNDB = new Comprobantes.Tipo(Lfx.Workspace.Master.MasterConnection, 22);
            if (Pais.Id == 1)
            {
                TipoFA.Nombre       = "Factura A";
                TipoFA.NombreLargo  = "Factura A";
                TipoFB.Nombre       = "Factura B";
                TipoFB.NombreLargo  = "Factura B";
                TipoNCA.Nombre      = "Nota créd. A";
                TipoNCA.NombreLargo = "Nota de crédito A";
                TipoNCB.Nombre      = "Nota créd. B";
                TipoNCB.NombreLargo = "Nota de crédito B";
                TipoNDA.Nombre      = "Nota déb. A";
                TipoNDA.NombreLargo = "Nota de débito A";
                TipoNDB.Nombre      = "Nota déb. B";
                TipoNDB.NombreLargo = "Nota de débito B";
            }
            else
            {
                TipoFA.Nombre       = "Fact. IVA discr.";
                TipoFA.NombreLargo  = "Factura IVA discriminado";
                TipoFB.Nombre       = "Fact. IVA no discr.";
                TipoFB.NombreLargo  = "Factura IVA no discriminado";
                TipoNCA.Nombre      = "Nota créd. ID";
                TipoNCA.NombreLargo = "Nota de crédito IVA discr.";
                TipoNCB.Nombre      = "Nota créd. IND";
                TipoNCB.NombreLargo = "Nota de crédito IVA no discr.";
                TipoNDA.Nombre      = "Nota déb. ID";
                TipoNDA.NombreLargo = "Nota de débito IVA discr.";
                TipoNDB.Nombre      = "Nota déb. IND";
                TipoNDB.NombreLargo = "Nota de débito IVA no discr.";
            }

            TipoFA.Guardar();
            TipoFB.Guardar();
            TipoNCA.Guardar();
            TipoNCB.Guardar();
            TipoNDA.Guardar();
            TipoNDB.Guardar();

            // Activo o desactivo los comprobantes C, E y M
            qGen.Update DesactComprob = new qGen.Update("documentos_tipos");
            DesactComprob.ColumnValues.AddWithValue("estado", nuevoPais.Id == 1 ? 1 : 0);
            DesactComprob.WhereClause = new qGen.Where("letra", qGen.ComparisonOperators.In, new string[] { "FC", "FE", "FM", "NDC", "NDE", "NDM", "NCC", "NCE", "NCM" });
            Lfx.Workspace.Master.MasterConnection.ExecuteNonQuery(DesactComprob);

            string CarpetaPlantillas = System.IO.Path.Combine(Lfx.Environment.Folders.UserFolder, "Plantillas" + System.IO.Path.DirectorySeparatorChar);
            string NombrePlantilla;

            if (nuevoPais.Id == 1)
            {
                NombrePlantilla = System.IO.Path.Combine(CarpetaPlantillas, "Factura, dos copias en una hoja A4.ltx");
            }
            else if (nuevoPais.Id == 6)
            {
                // Plantilla especial para Paraguay
                NombrePlantilla = System.IO.Path.Combine(CarpetaPlantillas, "Facturas, página completa A4 IVA segregado.ltx");
            }
            else
            {
                NombrePlantilla = System.IO.Path.Combine(CarpetaPlantillas, "Facturas, página completa A4.ltx");
            }

            if (System.IO.File.Exists(NombrePlantilla))
            {
                string Contenido;
                using (System.IO.StreamReader Str = new System.IO.StreamReader(NombrePlantilla, true)) {
                    Contenido = Str.ReadToEnd();
                    Str.Close();
                }

                Lbl.Impresion.Plantilla PlantillaFact = new Impresion.Plantilla(Lfx.Workspace.Master.MasterConnection, 1);
                PlantillaFact.CargarXml(Contenido);
                PlantillaFact.Guardar();

                Lbl.Impresion.Plantilla PlantillaOtros = new Impresion.Plantilla(Lfx.Workspace.Master.MasterConnection, 5);
                PlantillaOtros.CargarXml(Contenido);
                PlantillaOtros.Guardar();
            }

            Lbl.Comprobantes.Tipo.TodosPorLetra.Clear();
            Lfx.Workspace.Master.CurrentConfig.ClearCache();
        }
Beispiel #11
0
                public static void CambiarPais(Lbl.Entidades.Pais nuevoPais)
                {
                        Pais = nuevoPais;

                        Lfx.Workspace.Master.CurrentConfig.WriteGlobalSetting("Sistema.Pais", nuevoPais.Id);

                        // Configuro las alícuotas de IVA, normal y reducida
                        Lbl.Impuestos.Alicuota Alic1 = new Lbl.Impuestos.Alicuota(Lfx.Workspace.Master.MasterConnection, 1);
                        Alic1.Nombre = "IVA tasa normal";
                        Alic1.Porcentaje = nuevoPais.Iva1;
                        Alic1.Guardar();

                        Lbl.Impuestos.Alicuota Alic2 = new Lbl.Impuestos.Alicuota(Lfx.Workspace.Master.MasterConnection, 2);
                        Alic2.Nombre = "IVA tasa reducida";
                        Alic2.Porcentaje = nuevoPais.Iva2;
                        Alic2.Guardar();

                        Lbl.Comprobantes.Tipo TipoFA = new Comprobantes.Tipo(Lfx.Workspace.Master.MasterConnection, 1);
                        Lbl.Comprobantes.Tipo TipoFB = new Comprobantes.Tipo(Lfx.Workspace.Master.MasterConnection, 2);
                        Lbl.Comprobantes.Tipo TipoNCA = new Comprobantes.Tipo(Lfx.Workspace.Master.MasterConnection, 11);
                        Lbl.Comprobantes.Tipo TipoNCB = new Comprobantes.Tipo(Lfx.Workspace.Master.MasterConnection, 12);
                        Lbl.Comprobantes.Tipo TipoNDA = new Comprobantes.Tipo(Lfx.Workspace.Master.MasterConnection, 21);
                        Lbl.Comprobantes.Tipo TipoNDB = new Comprobantes.Tipo(Lfx.Workspace.Master.MasterConnection, 22);
                        if (Pais.Id == 1) {
                                TipoFA.Nombre = "Factura A";
                                TipoFA.NombreLargo = "Factura A";
                                TipoFB.Nombre = "Factura B";
                                TipoFB.NombreLargo = "Factura B";
                                TipoNCA.Nombre = "Nota créd. A";
                                TipoNCA.NombreLargo = "Nota de crédito A";
                                TipoNCB.Nombre = "Nota créd. B";
                                TipoNCB.NombreLargo = "Nota de crédito B";
                                TipoNDA.Nombre = "Nota déb. A";
                                TipoNDA.NombreLargo = "Nota de débito A";
                                TipoNDB.Nombre = "Nota déb. B";
                                TipoNDB.NombreLargo = "Nota de débito B";
                        } else {
                                TipoFA.Nombre = "Fact. IVA discr.";
                                TipoFA.NombreLargo = "Factura IVA discriminado";
                                TipoFB.Nombre = "Fact. IVA no discr.";
                                TipoFB.NombreLargo = "Factura IVA no discriminado";
                                TipoNCA.Nombre = "Nota créd. ID";
                                TipoNCA.NombreLargo = "Nota de crédito IVA discr.";
                                TipoNCB.Nombre = "Nota créd. IND";
                                TipoNCB.NombreLargo = "Nota de crédito IVA no discr.";
                                TipoNDA.Nombre = "Nota déb. ID";
                                TipoNDA.NombreLargo = "Nota de débito IVA discr.";
                                TipoNDB.Nombre = "Nota déb. IND";
                                TipoNDB.NombreLargo = "Nota de débito IVA no discr.";
                        }

                        TipoFA.Guardar();
                        TipoFB.Guardar();
                        TipoNCA.Guardar();
                        TipoNCB.Guardar();
                        TipoNDA.Guardar();
                        TipoNDB.Guardar();

                        // Activo o desactivo los comprobantes C, E y M
                        qGen.Update DesactComprob = new qGen.Update("documentos_tipos");
                        DesactComprob.Fields.AddWithValue("estado", nuevoPais.Id == 1 ? 1 : 0);
                        DesactComprob.WhereClause = new qGen.Where("letra", qGen.ComparisonOperators.In, new string[] { "FC", "FE", "FM", "NDC", "NDE", "NDM", "NCC", "NCE", "NCM" });
                        Lfx.Workspace.Master.MasterConnection.Execute(DesactComprob);

                        string CarpetaPlantillas = System.IO.Path.Combine(Lfx.Environment.Folders.UserFolder, "Plantillas" + System.IO.Path.DirectorySeparatorChar);
                        string NombrePlantilla;
                        if (nuevoPais.Id == 1)
                                NombrePlantilla = System.IO.Path.Combine(CarpetaPlantillas, "Factura, dos copias en una hoja A4.ltx");
                        else if (nuevoPais.Id == 6)
                                // Plantilla especial para Paraguay
                                NombrePlantilla = System.IO.Path.Combine(CarpetaPlantillas, "Facturas, página completa A4 IVA segregado.ltx");
                        else
                                NombrePlantilla = System.IO.Path.Combine(CarpetaPlantillas, "Facturas, página completa A4.ltx");

                        if (System.IO.File.Exists(NombrePlantilla)) {
                                string Contenido;
                                using (System.IO.StreamReader Str = new System.IO.StreamReader(NombrePlantilla, true)) {
                                        Contenido = Str.ReadToEnd();
                                        Str.Close();
                                }

                                Lbl.Impresion.Plantilla PlantillaFact = new Impresion.Plantilla(Lfx.Workspace.Master.MasterConnection, 1);
                                PlantillaFact.CargarXml(Contenido);
                                PlantillaFact.Guardar();

                                Lbl.Impresion.Plantilla PlantillaOtros = new Impresion.Plantilla(Lfx.Workspace.Master.MasterConnection, 5);
                                PlantillaOtros.CargarXml(Contenido);
                                PlantillaOtros.Guardar();

                        }

                        Lbl.Comprobantes.Tipo.TodosPorLetra.Clear();
                        Lfx.Workspace.Master.CurrentConfig.ClearCache();
                }
Beispiel #12
0
        public override string ObtenerValorCampo(string nombreCampo, string formato)
        {
            string Res = null;

            switch (nombreCampo.ToUpperInvariant())
            {
            case "ARTICULOS.CODIGOS":
            case "ARTÍCULOS.CÓDIGOS":
            case "CODIGOS":
            case "CÓDIGOS":
                Res = null;
                for (int i = 0; i < this.Comprobante.Articulos.Count; i++)
                {
                    if (i >= DesdeImprimir && i <= HastaImprimir)
                    {
                        // FIXME: que imprima el código seleccionado por el usuario, no siempre el autonumérico
                        string CodigoImprimir;
                        if (this.Comprobante.Articulos[i].Articulo == null)
                        {
                            CodigoImprimir = "";
                        }
                        else
                        {
                            CodigoImprimir = this.Comprobante.Articulos[i].Articulo.Id.ToString();
                        }
                        if (Res == null)
                        {
                            Res = CodigoImprimir;
                        }
                        else
                        {
                            Res += System.Environment.NewLine + CodigoImprimir;
                        }
                    }
                }
                return(Res);

            case "ARTICULOS.CANTIDADES":
            case "ARTÍCULOS.CANTIDADES":
            case "CANTIDADES":
                Res = null;
                for (int i = 0; i < this.Comprobante.Articulos.Count; i++)
                {
                    if (Res == null)
                    {
                        Res = "";
                    }
                    if (i >= DesdeImprimir && i <= HastaImprimir)
                    {
                        Res += Lfx.Types.Formatting.FormatNumberForPrint(this.Comprobante.Articulos[i].Cantidad, Lbl.Sys.Config.Articulos.Decimales) + System.Environment.NewLine;
                    }
                }
                return(Res);

            case "ARTICULOS.IVA":
            case "ARTÍCULOS.IVA":
                Res = null;
                for (int i = 0; i < this.Comprobante.Articulos.Count; i++)
                {
                    if (i >= DesdeImprimir && i <= HastaImprimir)
                    {
                        if (Res == null)
                        {
                            Res = "";
                        }
                        Lbl.Impuestos.Alicuota aliC = this.Comprobante.Articulos[i].ObtenerAlicuota();
                        if (aliC != null)
                        {
                            Res += aliC.Porcentaje.ToString("0.0") + "%" + System.Environment.NewLine;
                        }
                        else
                        {
                            Res += System.Environment.NewLine;
                        }
                    }
                }
                return(Res);

            case "ARTICULOS.IVADISCRIMINADO":
            case "ARTÍCULOS.IVADISCRIMINADO":
                Res = null;
                for (int i = 0; i < this.Comprobante.Articulos.Count; i++)
                {
                    if (i >= DesdeImprimir && i <= HastaImprimir)
                    {
                        if (Res == null)
                        {
                            Res = "";
                        }
                        Res += Lfx.Types.Formatting.FormatCurrencyForPrint(this.Comprobante.Articulos[i].ImporteUnitarioIvaDiscriminado, Lfx.Workspace.Master.CurrentConfig.Moneda.DecimalesFinal) + System.Environment.NewLine;
                    }
                }
                return(Res);

            case "ARTÍCULOS.IMPORTESCONIVA":
            case "ARTICULOS.IMPORTESCONIVA":
                Res = "";
                for (int i = 0; i < this.Comprobante.Articulos.Count; i++)
                {
                    if (i >= DesdeImprimir && i <= HastaImprimir)
                    {
                        if (Res == null)
                        {
                            Res = "";
                        }
                        Res += Lfx.Types.Formatting.FormatCurrencyForPrint(this.Comprobante.Articulos[i].ImporteAImprimir, Lfx.Workspace.Master.CurrentConfig.Moneda.DecimalesFinal) + System.Environment.NewLine;
                    }
                }
                return(Res);

            case "ARTÍCULOS.UNITARIOSCONIVA":
            case "ARTICULOS.UNITARIOSCONIVA":
                Res = null;
                for (int i = 0; i < this.Comprobante.Articulos.Count; i++)
                {
                    if (i >= DesdeImprimir && i <= HastaImprimir)
                    {
                        if (Res == null)
                        {
                            Res = "";
                        }
                        Res += Lfx.Types.Formatting.FormatCurrencyForPrint(this.Comprobante.Articulos[i].ImporteUnitarioConIvaFinal, Lfx.Workspace.Master.CurrentConfig.Moneda.DecimalesFinal) + System.Environment.NewLine;
                    }
                }
                return(Res);

            case "ARTÍCULOS.IMPORTESCONIVA1":
            case "ARTÍCULOS.IMPORTESCONIVA2":
            case "ARTÍCULOS.IMPORTESCONIVA3":
            case "ARTÍCULOS.IMPORTESCONIVA4":
            case "ARTÍCULOS.IMPORTESCONIVA5":
            case "ARTÍCULOS.IMPORTESCONIVA6":
            case "ARTÍCULOS.IMPORTESCONIVA7":
            case "ARTÍCULOS.IMPORTESCONIVA8":
            case "ARTÍCULOS.IMPORTESCONIVA9":
            case "ARTICULOS.IMPORTESCONIVA1":
            case "ARTICULOS.IMPORTESCONIVA2":
            case "ARTICULOS.IMPORTESCONIVA3":
            case "ARTICULOS.IMPORTESCONIVA4":
            case "ARTICULOS.IMPORTESCONIVA5":
            case "ARTICULOS.IMPORTESCONIVA6":
            case "ARTICULOS.IMPORTESCONIVA7":
            case "ARTICULOS.IMPORTESCONIVA8":
            case "ARTICULOS.IMPORTESCONIVA9":
                int NumeroIvaArt = Lfx.Types.Parsing.ParseInt(nombreCampo.Substring(nombreCampo.Length - 1));
                Res = null;
                for (int i = 0; i < this.Comprobante.Articulos.Count; i++)
                {
                    if (i >= DesdeImprimir && i <= HastaImprimir)
                    {
                        if (Res == null)
                        {
                            Res = Lfx.Types.Formatting.FormatCurrencyForPrint(this.Comprobante.Articulos[i].ImporteConIvaFinalAlicuota(NumeroIvaArt), Lfx.Workspace.Master.CurrentConfig.Moneda.DecimalesFinal);
                        }
                        else
                        {
                            Res += System.Environment.NewLine + Lfx.Types.Formatting.FormatCurrencyForPrint(this.Comprobante.Articulos[i].ImporteConIvaFinalAlicuota(NumeroIvaArt), Lfx.Workspace.Master.CurrentConfig.Moneda.DecimalesFinal);
                        }
                    }
                }
                return(Res);

            case "IVA27":
            case "IVA21":
            case "IVA105":
            case "IVA025":
            case "IVA05":
            case "IVA0":
                return(Lfx.Types.Formatting.FormatCurrencyForPrint(0, Lfx.Workspace.Master.CurrentConfig.Moneda.DecimalesFinal));

            case "ARTÍCULOS.FULLDETALLES":
            case "ARTICULOS.FULLDETALLES":
                Res = null;
                int CantidadDeArticulosContinuo = this.Comprobante.Articulos.Count;
                PaginaTotal   = (int)(Math.Ceiling(this.Comprobante.Articulos.Count / (decimal)CantidadFilas));
                UltimaEspejo  = DesdeImprimir;
                DesdeImprimir = Espejo ? UltimaEspejo : UltimaFila;
                HastaImprimir = DesdeImprimir + CantidadFilas;

                for (int i = 0; i < CantidadDeArticulosContinuo; i++)
                {
                    string NombreArticulo = "";
                    if (i >= DesdeImprimir && i <= HastaImprimir)
                    {
                        if (this.Comprobante.Articulos[i].Articulo == null)
                        {
                            NombreArticulo = this.Comprobante.Articulos[i].Nombre;
                        }
                        else
                        {
                            NombreArticulo = this.Comprobante.Articulos[i].Articulo.ToString();
                        }
                        if (Res == null)
                        {
                            Res = NombreArticulo;
                        }
                        else
                        {
                            Res += System.Environment.NewLine + NombreArticulo;
                        }

                        Res       += "  (x" + Lfx.Types.Formatting.FormatNumberForPrint(this.Comprobante.Articulos[i].Cantidad, Lbl.Sys.Config.Articulos.Decimales) + ")";
                        Res       += "   $ " + Lfx.Types.Formatting.FormatCurrencyForPrint(this.Comprobante.Articulos[i].ImporteAImprimir, Lfx.Workspace.Master.CurrentConfig.Moneda.DecimalesFinal);
                        FilaActual = i;
                    }
                }
                if (!Espejo)
                {
                    UltimaFila = FilaActual + 1;
                }
                if (UltimaFila >= CantidadDeArticulosContinuo)
                {
                    int CanARestar = HastaImprimir - FilaActual;
                    if (this.Comprobante.Descuento != 0)
                    {
                        Res += System.Environment.NewLine + "Descuento: " + Lfx.Types.Formatting.FormatNumberForPrint(this.Comprobante.Descuento, 2) + "%";
                    }
                    if (this.Comprobante.Recargo != 0)
                    {
                        if (CanARestar < 1)
                        {
                            Res += System.Environment.NewLine + "Recargo: " + Lfx.Types.Formatting.FormatNumberForPrint(this.Comprobante.Descuento, 2) + "%   ---> Página " + PaginaNumero.ToString();
                        }
                        else
                        {
                            Res += System.Environment.NewLine + "Recargo: " + Lfx.Types.Formatting.FormatNumberForPrint(this.Comprobante.Descuento, 2) + "%";
                        }
                    }
                    else
                    {
                        for (int resto = 0; resto < CanARestar; resto++)
                        {
                            Res += System.Environment.NewLine;
                        }
                        Res += System.Environment.NewLine + "        Página " + PaginaNumero.ToString();
                    }
                }
                else
                {
                    HastaImprimir = UltimaFila;
                    //No es última página
                    Res += System.Environment.NewLine + "        Página " + PaginaNumero.ToString();
                    Res += System.Environment.NewLine + "        Continúa en pág. " + (PaginaNumero + 1).ToString();
                }
                return(Res);

            case "ARTICULOS.DETALLES":
            case "ARTÍCULOS.DETALLES":
            case "DETALLES":
                Res = null;
                int CantidadDeArticulos = this.Comprobante.Articulos.Count;
                PaginaTotal   = (int)(Math.Ceiling(this.Comprobante.Articulos.Count / (decimal)CantidadFilas));
                UltimaEspejo  = DesdeImprimir;
                DesdeImprimir = Espejo ? UltimaEspejo : UltimaFila;
                HastaImprimir = DesdeImprimir + CantidadFilas;

                for (int i = 0; i < CantidadDeArticulos; i++)
                {
                    string NombreArticulo = "";
                    if (i >= DesdeImprimir && i <= HastaImprimir)
                    {
                        if (this.Comprobante.Articulos[i].Articulo == null)
                        {
                            NombreArticulo = this.Comprobante.Articulos[i].Nombre;
                        }
                        else
                        {
                            NombreArticulo = this.Comprobante.Articulos[i].Articulo.ToString();
                        }
                        if (Res == null)
                        {
                            Res = NombreArticulo;
                        }
                        else
                        {
                            Res += System.Environment.NewLine + NombreArticulo;
                        }
                        FilaActual = i;
                    }
                }
                if (!Espejo)
                {
                    UltimaFila = FilaActual + 1;
                }
                if (UltimaFila >= CantidadDeArticulos)
                {
                    if (this.Comprobante.Descuento != 0)
                    {
                        Res += System.Environment.NewLine + "Descuento: " + Lfx.Types.Formatting.FormatNumberForPrint(this.Comprobante.Descuento, 2) + "%";
                    }
                    if (this.Comprobante.Recargo != 0)
                    {
                        Res += System.Environment.NewLine + "Recargo: " + Lfx.Types.Formatting.FormatNumberForPrint(this.Comprobante.Descuento, 2) + "%";
                    }
                }
                else
                {
                    HastaImprimir = UltimaFila;
                    //No es última página
                    Res += System.Environment.NewLine + "        Página " + PaginaNumero.ToString();
                    Res += System.Environment.NewLine + "        Continúa en pág. " + (PaginaNumero + 1).ToString();
                }
                return(Res);

            case "ARTICULOS.UNITARIOSORIGINALES":
            case "ARTÍCULOS.UNITARIOSORIGINALES":
                Res = null;
                for (int i = 0; i < this.Comprobante.Articulos.Count; i++)
                {
                    Lbl.Comprobantes.DetalleArticulo Det = this.Comprobante.Articulos[i];
                    if (i >= DesdeImprimir && i <= HastaImprimir)
                    {
                        string Linea = Lfx.Types.Formatting.FormatCurrencyForPrint(Det.ImporteUnitario, Lfx.Workspace.Master.CurrentConfig.Moneda.DecimalesFinal);
                        if (Res == null)
                        {
                            Res = Linea;
                        }
                        else
                        {
                            Res += System.Environment.NewLine + Linea;
                        }
                    }
                }
                return(Res);

            case "ARTICULOS.UNITARIOS":
            case "ARTÍCULOS.UNITARIOS":
            case "ARTÍCULOS.UNITARIOSFINALES":
            case "PRECIOS":
                Res = null;
                for (int i = 0; i < this.Comprobante.Articulos.Count; i++)
                {
                    if (i >= DesdeImprimir && i <= HastaImprimir)
                    {
                        Lbl.Comprobantes.DetalleArticulo Det = this.Comprobante.Articulos[i];
                        string Linea;
                        if (Comprobante.Tipo.DiscriminaIva)
                        {
                            Linea = Lfx.Types.Formatting.FormatCurrencyForPrint(Det.ImporteUnitarioSinIvaFinal, Lfx.Workspace.Master.CurrentConfig.Moneda.DecimalesFinal);
                        }
                        else
                        {
                            Linea = Lfx.Types.Formatting.FormatCurrencyForPrint(Det.ImporteUnitarioConIvaFinal, Lfx.Workspace.Master.CurrentConfig.Moneda.DecimalesFinal);
                        }
                        if (Res == null)
                        {
                            Res = Linea;
                        }
                        else
                        {
                            Res += System.Environment.NewLine + Linea;
                        }
                    }
                }
                return(Res);

            case "ARTICULOS.DESCUENTOS":
            case "ARTÍCULOS.DESCUENTOS":
            case "DESCUENTOS":
                Res = null;
                for (int i = 0; i < this.Comprobante.Articulos.Count; i++)
                {
                    if (i >= DesdeImprimir && i <= HastaImprimir)
                    {
                        Lbl.Comprobantes.DetalleArticulo Det = this.Comprobante.Articulos[i];
                        string Linea;
                        if (Det.Descuento == 0)
                        {
                            Linea = "--";
                        }
                        else
                        {
                            Linea = Lfx.Types.Formatting.FormatNumberForPrint(Det.Descuento, 2) + "%";
                        }
                        if (Res == null)
                        {
                            Res = Linea;
                        }
                        else
                        {
                            Res += System.Environment.NewLine + Linea;
                        }
                    }
                }
                return(Res);

            case "ARTICULOS.IMPORTES":
            case "ARTÍCULOS.IMPORTES":
            case "IMPORTES":
                Res = null;
                for (int i = 0; i < this.Comprobante.Articulos.Count; i++)
                {
                    if (i >= DesdeImprimir && i <= HastaImprimir)
                    {
                        Lbl.Comprobantes.DetalleArticulo Det = this.Comprobante.Articulos[i];
                        string Linea = Lfx.Types.Formatting.FormatCurrencyForPrint(Det.ImporteAImprimir, Lfx.Workspace.Master.CurrentConfig.Moneda.DecimalesFinal);
                        if (Res == null)
                        {
                            Res = "";
                        }
                        Res += Linea + System.Environment.NewLine;
                    }
                }
                return(Res);

            case "SUBTOTAL":
            case "COMPROBANTE.SUBTOTAL":
                if (Comprobante.DiscriminaIva)
                {
                    return(Lfx.Types.Formatting.FormatCurrencyForPrint(this.Comprobante.SubtotalSinIvaFinal, Lfx.Workspace.Master.CurrentConfig.Moneda.DecimalesFinal));
                }
                else
                {
                    return(Lfx.Types.Formatting.FormatCurrencyForPrint(this.Comprobante.Subtotal, Lfx.Workspace.Master.CurrentConfig.Moneda.DecimalesFinal));
                }

            case "TOTAL":
            case "COMPROBANTE.TOTAL":
                return(Lfx.Types.Formatting.FormatCurrencyForPrint(this.Comprobante.Total, Lfx.Workspace.Master.CurrentConfig.Moneda.DecimalesFinal));

            case "IVADISCRIMINADO":
            case "COMPROBANTE.IVADISCRIMINADO":
                if (Comprobante.DiscriminaIva)
                {
                    return(Lfx.Types.Formatting.FormatCurrencyForPrint(this.Comprobante.ImporteIvaDiscriminadoFinal, Lfx.Workspace.Master.CurrentConfig.Moneda.DecimalesFinal));
                }
                else
                {
                    return("N/A");
                }

            case "COMPROBANTE.TOTALIVA1":
            case "COMPROBANTE.TOTALIVA2":
            case "COMPROBANTE.TOTALIVA3":
            case "COMPROBANTE.TOTALIVA4":
            case "COMPROBANTE.TOTALIVA5":
            case "COMPROBANTE.TOTALIVA6":
            case "COMPROBANTE.TOTALIVA7":
            case "COMPROBANTE.TOTALIVA8":
            case "COMPROBANTE.TOTALIVA9":
            case "TOTALIVA1":
            case "TOTALIVA2":
            case "TOTALIVA3":
            case "TOTALIVA4":
            case "TOTALIVA5":
            case "TOTALIVA6":
            case "TOTALIVA7":
            case "TOTALIVA8":
            case "TOTALVA9":
                int NumeroIvaComprob = Lfx.Types.Parsing.ParseInt(nombreCampo.Substring(nombreCampo.Length - 1));
                return(Lfx.Types.Formatting.FormatCurrencyForPrint(this.Comprobante.TotalIvaAlicuota(NumeroIvaComprob), Lfx.Workspace.Master.CurrentConfig.Moneda.DecimalesFinal));

            case "RECARGO":
            case "COMPROBANTE.RECARGO":
                return(Lfx.Types.Formatting.FormatNumberForPrint(this.Comprobante.Recargo, 2));

            case "FORMAPAGO":
            case "COMPROBANTE.FORMAPAGO":
                if (this.Comprobante.FormaDePago == null)
                {
                    return("");
                }
                else
                {
                    return(this.Comprobante.FormaDePago.ToString());
                }

            case "SONPESOS":
            case "COMPROBANTE.SONPESOS":
                return(Lfx.Types.Formatting.SpellNumber(this.Comprobante.Total));

            case "TIPO":
            case "COMPROBANTE.TIPO":
                return(this.Comprobante.Tipo.Nombre);

            default:
                return(base.ObtenerValorCampo(nombreCampo, formato));
            }
        }