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(); }
public bool CrearCuenta(Cuenta pCuenta, string pXml) { return _CSC.CrearCuenta(pCuenta, pXml); }
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"); }