Beispiel #1
0
        private void buttonGenerarCierre_Click(object sender, RoutedEventArgs e)
        {
            _cuentasCierreIngresos = new ObservableCollection<Asiento>();
            double montoGlobalPG = 0;
            var monedaSistema = ServicioFinanzas.Instancia.ObtenerMonedasSistema("Sistema");
            Asiento asientoBlanco = new Asiento();
            double montoPG = 0;
            double montoCV = 0;
            double factor = Math.Pow(10, 2);
            var cuentaPG = ServicioFinanzas.Instancia.ObtenerCuenta("Pérdidas y ganancias");
            var asientoPG = new Asiento();
            Cuenta cuentaNuevaPG = new Cuenta();
            var cuentaCV = ServicioFinanzas.Instancia.ObtenerCuenta("Costo de ventas");
            var asientoCV = new Asiento();
            Cuenta cuentaNuevaCV = new Cuenta();

            //Agregar asientos de cierre de compras
            var cuentasCompras = ServicioFinanzas.Instancia.ObtenerCuentasCierreCompras();
            foreach (var cuenta in cuentasCompras)
            {
                var asiento = new Asiento();
                Cuenta cuentaNueva = new Cuenta();
                cuentaNueva.Nombre = cuenta.Nombre;
                cuentaNueva.Codigo = cuenta.Codigo;
                asiento.Cuenta = cuentaNueva;
                asiento.FechaContable = DateTime.Today;
                if (cuenta.Saldo_Haber != 0)
                {
                    asiento.HaberMonedaSistema = cuenta.Saldo_Haber;
                    asiento.HaberMonedaOtra = ServicioFinanzas.Instancia.ConvertirAMonedaLocal(monedaSistema, cuenta.Saldo_Haber);
                    asiento.HaberMonedaOtra = Math.Truncate(asiento.HaberMonedaOtra * factor) / factor;
                    montoCV+=cuenta.Saldo_Haber;
                }
                else
                {
                    asiento.DebeMonedaSistema = cuenta.Saldo;
                    asiento.DebeMonedaOtra = ServicioFinanzas.Instancia.ConvertirAMonedaLocal(monedaSistema, cuenta.Saldo);
                    asiento.DebeMonedaOtra = Math.Truncate(asiento.DebeMonedaOtra * factor) / factor;
                    montoCV -= cuenta.Saldo_Haber;
                }
                asiento.MonedaAcronimo = monedaSistema.Acronimo;
                _cuentasCierreIngresos.Add(asiento);
            }

            cuentaNuevaCV.Codigo = cuentaCV.Codigo;
            cuentaNuevaCV.Nombre = cuentaCV.Nombre;
            asientoCV.Cuenta = cuentaNuevaCV;
            asientoCV.FechaContable = DateTime.Today;
            if (montoCV != 0)
            {
                asientoCV.HaberMonedaSistema = montoCV;
                asientoCV.HaberMonedaOtra = ServicioFinanzas.Instancia.ConvertirAMonedaLocal(monedaSistema, montoPG);
                asientoCV.HaberMonedaOtra = Math.Truncate(asientoCV.HaberMonedaOtra * factor) / factor;
                asientoCV.MonedaAcronimo = monedaSistema.Acronimo;
                _cuentasCierreIngresos.Add(asientoCV);
            }
            _cuentasCierreIngresos.Add(asientoBlanco);

            //Agregar asientos de cierre de Ingresos
            asientoPG = new Asiento();
            cuentaNuevaPG = new Cuenta();
            var cuentasIngresos = ServicioFinanzas.Instancia.ObtenerCuentasCierreIngresos();
            foreach(var cuenta in cuentasIngresos){
                var asiento = new Asiento();
                Cuenta cuentaNueva = new Cuenta();
                cuentaNueva.Nombre = cuenta.Nombre;
                cuentaNueva.Codigo = cuenta.Codigo;
                asiento.Cuenta = cuentaNueva;
                asiento.FechaContable = DateTime.Today;
                if (cuenta.Saldo_Haber != 0)
                {
                    asiento.HaberMonedaSistema = cuenta.Saldo_Haber;
                    asiento.HaberMonedaOtra = ServicioFinanzas.Instancia.ConvertirAMonedaLocal(monedaSistema,cuenta.Saldo_Haber);
                    asiento.HaberMonedaOtra = Math.Truncate(asiento.HaberMonedaOtra * factor) / factor;
                    montoPG -= cuenta.Saldo_Haber;
                }
                else
                {
                    asiento.DebeMonedaSistema = cuenta.Saldo;
                    asiento.DebeMonedaOtra = ServicioFinanzas.Instancia.ConvertirAMonedaLocal(monedaSistema, cuenta.Saldo);
                    asiento.DebeMonedaOtra = Math.Truncate(asiento.DebeMonedaOtra * factor) / factor;
                    montoPG += cuenta.Saldo;
                }
                asiento.MonedaAcronimo=monedaSistema.Acronimo;
                _cuentasCierreIngresos.Add(asiento);
            }

            if (textBoxPerdidasYGanancias.Text == "") cuentaNuevaPG.Nombre = cuentaPG.Nombre;
            else cuentaNuevaPG.Nombre = textBoxPerdidasYGanancias.Text;
            cuentaNuevaPG.Codigo = cuentaPG.Codigo;
            asientoPG.Cuenta = cuentaNuevaPG;
            asientoPG.FechaContable = DateTime.Today;

            if (montoPG != 0)
            {
                asientoPG.HaberMonedaSistema = montoPG;
                asientoPG.HaberMonedaOtra = ServicioFinanzas.Instancia.ConvertirAMonedaLocal(monedaSistema, montoPG);
                asientoPG.HaberMonedaOtra = Math.Truncate(asientoPG.HaberMonedaOtra * factor) / factor;

                asientoPG.MonedaAcronimo = monedaSistema.Acronimo;
                _cuentasCierreIngresos.Add(asientoPG);
                montoGlobalPG += montoPG;
            }
            _cuentasCierreIngresos.Add(asientoBlanco);

            //Agregar asientos de cierre de gastos
            asientoPG = new Asiento();
            cuentaNuevaPG = new Cuenta();

            montoPG = 0;
            var cuentasGastos = ServicioFinanzas.Instancia.ObtenerCuentasCierreGastos();
            foreach (var cuenta in cuentasGastos)
            {
                var asiento = new Asiento();
                Cuenta cuentaNueva = new Cuenta();
                cuentaNueva.Nombre = cuenta.Nombre;
                cuentaNueva.Codigo = cuenta.Codigo;
                asiento.Cuenta = cuentaNueva;
                asiento.FechaContable = DateTime.Today;

                asiento.HaberMonedaSistema = cuenta.Saldo;
                asiento.HaberMonedaOtra = ServicioFinanzas.Instancia.ConvertirAMonedaLocal(monedaSistema, cuenta.Saldo);
                asiento.HaberMonedaOtra = Math.Truncate(asiento.HaberMonedaOtra * factor) / factor;
                montoPG += cuenta.Saldo;

                asiento.MonedaAcronimo = monedaSistema.Acronimo;
                _cuentasCierreIngresos.Add(asiento);
            }

            if (textBoxPerdidasYGanancias.Text == "") cuentaNuevaPG.Nombre = cuentaPG.Nombre;
            else cuentaNuevaPG.Nombre = textBoxPerdidasYGanancias.Text;
            cuentaNuevaPG.Codigo = cuentaPG.Codigo;
            asientoPG.Cuenta = cuentaNuevaPG;
            asientoPG.FechaContable = DateTime.Today;

            if (montoPG != 0)
            {
                asientoPG.DebeMonedaSistema = montoPG;
                asientoPG.DebeMonedaOtra = ServicioFinanzas.Instancia.ConvertirAMonedaLocal(monedaSistema, montoPG);
                asientoPG.DebeMonedaOtra = Math.Truncate(asientoPG.DebeMonedaOtra * factor) / factor;
                asientoPG.MonedaAcronimo = monedaSistema.Acronimo;
                _cuentasCierreIngresos.Add(asientoPG);
                montoGlobalPG -= montoPG;
            }
            _cuentasCierreIngresos.Add(asientoBlanco);

            //Asiento de PyG contra Utilidades retenidas
            asientoPG = new Asiento();
            cuentaNuevaPG = new Cuenta();
            var cuentaUR = ServicioFinanzas.Instancia.ObtenerCuenta("Utilidades retenidas");
            var asientoUR = new Asiento();
            Cuenta cuentaNuevaUR = new Cuenta();

            if (montoGlobalPG != 0)
            {
                if (textBoxPerdidasYGanancias.Text == "") cuentaNuevaPG.Nombre = cuentaPG.Nombre;
                else cuentaNuevaPG.Nombre = textBoxPerdidasYGanancias.Text;
                cuentaNuevaPG.Codigo = cuentaPG.Codigo;
                asientoPG.Cuenta = cuentaNuevaPG;
                asientoPG.FechaContable = DateTime.Today;

                asientoPG.DebeMonedaSistema = montoGlobalPG;
                asientoPG.DebeMonedaOtra = ServicioFinanzas.Instancia.ConvertirAMonedaLocal(monedaSistema, montoGlobalPG);
                asientoPG.DebeMonedaOtra = Math.Truncate(asientoPG.DebeMonedaOtra * factor) / factor;
                asientoPG.MonedaAcronimo = monedaSistema.Acronimo;

                _cuentasCierreIngresos.Add(asientoPG);

                if (textBoxUtilidades.Text == "") cuentaNuevaUR.Nombre = cuentaUR.Nombre;
                else cuentaNuevaUR.Nombre = textBoxPerdidasYGanancias.Text;
                cuentaNuevaUR.Codigo = cuentaUR.Codigo;
                asientoUR.Cuenta = cuentaNuevaUR;
                asientoUR.FechaContable = DateTime.Today;

                asientoUR.HaberMonedaSistema = asientoPG.DebeMonedaSistema;
                asientoUR.HaberMonedaOtra = asientoPG.DebeMonedaOtra;
                asientoUR.MonedaAcronimo = monedaSistema.Acronimo;

                _cuentasCierreIngresos.Add(asientoUR);
                _cuentasCierreIngresos.Add(asientoBlanco);
            }

            //Asiento de Utilidades retenidas contra dividendos
            asientoUR = new Asiento();
            var cuentaDiv = ServicioFinanzas.Instancia.ObtenerCuenta("Dividendos");
            if (cuentaDiv.Saldo != 0)
            {
                var asientoDiv = new Asiento();
                Cuenta cuentaNuevaDiv = new Cuenta();

                cuentaNuevaDiv.Nombre = cuentaDiv.Nombre;
                cuentaNuevaUR.Codigo = cuentaUR.Codigo;
                asientoDiv.Cuenta = cuentaNuevaDiv;
                asientoDiv.FechaContable = DateTime.Today;

                asientoDiv.HaberMonedaSistema = cuentaDiv.Saldo;
                asientoDiv.HaberMonedaOtra = ServicioFinanzas.Instancia.ConvertirAMonedaLocal(monedaSistema, cuentaDiv.Saldo);
                asientoDiv.HaberMonedaOtra = Math.Truncate(asientoDiv.HaberMonedaOtra * factor) / factor;
                asientoDiv.MonedaAcronimo = monedaSistema.Acronimo;

                if (textBoxUtilidades.Text == "") cuentaNuevaUR.Nombre = cuentaUR.Nombre;
                else cuentaNuevaUR.Nombre = textBoxPerdidasYGanancias.Text;
                cuentaNuevaUR.Codigo = cuentaUR.Codigo;
                asientoUR.Cuenta = cuentaNuevaUR;
                asientoUR.FechaContable = DateTime.Today;
                asientoUR.DebeMonedaOtra = asientoDiv.HaberMonedaOtra;
                asientoUR.DebeMonedaSistema = asientoDiv.HaberMonedaSistema;

                _cuentasCierreIngresos.Add(asientoUR);
                _cuentasCierreIngresos.Add(asientoDiv);
                _cuentasCierreIngresos.Add(asientoBlanco);
            }

            dataGridCierre.ItemsSource = _cuentasCierreIngresos;
            dataGridCierre.Items.Refresh();
        }
Beispiel #2
0
 public bool CrearCuenta(Cuenta pCuenta, string pXml)
 {
     return _CSC.CrearCuenta(pCuenta, pXml);
 }
Beispiel #3
0
        private void buttonAgregar_Click(object sender, RoutedEventArgs e)
        {
            var monedaSistema = ServicioFinanzas.Instancia.ObtenerMonedasSistema("Sistema");
            var monedaLocal = ServicioFinanzas.Instancia.ObtenerMonedasSistema("Local");
            /*<MonedasCuenta>
                <Moneda moneda="CRC"/>
                <Moneda moneda="YEN"/>
            </MonedasCuenta>*/
            string xml = "";
            xml += "<MonedasCuenta>";
            xml += string.Format("<Moneda moneda=\"{0}\"/>",(monedaSistema.Acronimo));
            xml += string.Format("<Moneda moneda=\"{0}\"/>", (monedaLocal.Acronimo));
            xml += "</MonedasCuenta>";
            char[] delimiterChars = { '-' };
            string[] words = textBoxCodigo.Text.Split(delimiterChars);
            string codigoPadre="";
            int i;
            for (i = 0; i + 2 < words.Length; i++)
                codigoPadre += words[i] + "-";
            codigoPadre += words[i];
            string identificador="";
            switch (words[0]) {
                case "1":
                    identificador = "Activo";
                    break;
                case "2":
                    identificador = "Pasivo";
                    break;
                case "3":
                    identificador = "Patrimonio";
                    break;
                case "4":
                    identificador = "Ingresos";
                    break;
                case "5":
                    identificador = "Costos";
                    break;
                case "6":
                    identificador = "Gastos";
                    break;
                case "7":
                    identificador = "Otros Ingresos";
                    break;
                case "8":
                    identificador = "Otros Gastos";
                    break;
            }
            Cuenta cuenta = new Cuenta()
                {
                    Codigo = textBoxCodigo.Text,
                    Nombre = textBoxNomCuenta.Text,
                    NombreIdiomaExtranjero = textBoxNomExtranjero.Text,
                    _Moneda=(Moneda)comboBoxMoneda.SelectedItem,
                    CodigoCuentaPadre=codigoPadre,
                    Nivel=i+2,
                    Enabled=true,
                    Identificador=identificador
                };
            if (ServicioFinanzas.Instancia.CrearCuenta(cuenta, xml))
            {
                MessageBoxResult result = MessageBox.Show("Se Ha Agregado La Cuenta Correctamente");
                Reset();

                var cuentas = ServicioFinanzas.Instancia.DemeCuentasHijas();
                _CmbCuentas.ItemsSource = cuentas;
                _CmbCuentas.Items.Refresh();

                /*Carga del treeview*/
                var cuentasTreeView = ServicioFinanzas.Instancia.ObtenerCuentasTreeView();
                Parent.Items.Clear();
                TreeViewItem itemTreeView = Parent;
                TreeViewItem itemNivelCuatro = null;
                TreeViewItem itemNivelTres = null;
                TreeViewItem itemNivelDos = null;

                foreach (var item in cuentasTreeView)
                {
                    TreeViewItem newChild = new TreeViewItem();
                    newChild.Header = item.Codigo + " " + item.Nombre;

                    if (item.Nivel == 1)
                    {
                        itemTreeView.Items.Add(newChild);
                        itemNivelDos = newChild;
                    }
                    else
                    {
                        if (item.Nivel == 2)
                        {
                            itemNivelDos.Items.Add(newChild);
                            itemNivelTres = newChild;
                        }
                        else
                        {
                            if (item.Nivel == 3)
                            {
                                itemNivelTres.Items.Add(newChild);
                                itemNivelCuatro = newChild;
                            }
                            else
                            {
                                itemNivelCuatro.Items.Add(newChild);
                            }
                        }
                    }
                    /*TreeViewItem newChild = new TreeViewItem();
                    newChild.Header = item.Nombre;
                    Parent.Items.Add(newChild);*/
                }
                Parent.IsExpanded = true;
            }
            else
                MessageBox.Show("Error al intentar crear la cuenta");
        }