示例#1
0
        private void Fetch(IDataReader source)
        {
            try
            {
                _base.CopyValues(source);

                if (Childs)
                {
                    if (nHMng.UseDirectSQL)
                    {
                        CashLine.DoLOCK(Session());
                        string      query  = CashLines.SELECT_BY_CIERRE(this.Oid);
                        IDataReader reader = nHMng.SQLNativeSelect(query, Session());
                        _lineas = CashLines.GetChildList(reader, false);
                    }

                    UpdateSaldo();
                }
            }
            catch (Exception ex)
            {
                iQExceptionHandler.TreatException(ex);
            }

            MarkOld();
        }
        protected override void AnulaLineaAction()
        {
            if (Lines_DGW.CurrentRow == null)
            {
                return;
            }

            CashLine item = Lines_DGW.CurrentRow.DataBoundItem as CashLine;

            if (ProgressInfoMng.ShowQuestion(Face.Resources.Messages.NULL_CONFIRM) != DialogResult.Yes)
            {
                return;
            }

            if (item.Locked)
            {
                return;
            }

            _entity.Lines.Remove(item);

            _entity.UpdateSaldo();
            Datos.ResetBindings(false);

            SetGridFormat(Lines_DGW);
        }
示例#3
0
        private void Fetch(CierreCaja source)
        {
            try
            {
                SessionCode = source.SessionCode;

                _base.CopyValues(source);

                if (Childs)
                {
                    if (nHMng.UseDirectSQL)
                    {
                        CashLine.DoLOCK(Session());
                        string      query  = CashLines.SELECT_BY_CIERRE(this.Oid);
                        IDataReader reader = nHMng.SQLNativeSelect(query, Session());
                        _lineas = CashLines.GetChildList(reader, false);
                    }
                    else
                    {
                        CriteriaEx criteria = CashLine.GetCriteria(Session());
                        criteria.AddEq("OidCierre", this.Oid);
                        _lineas = CashLines.GetChildList(criteria.List <CashLine>());
                    }

                    UpdateSaldo();
                }
            }
            catch (Exception ex)
            {
                iQExceptionHandler.TreatException(ex);
            }

            MarkOld();
        }
        protected void SetTipo()
        {
            CashLine item = Lines_DGW.CurrentRow.DataBoundItem as CashLine;

            SelectEnumInputForm form = new SelectEnumInputForm(true);

            if (_linea_libre)
            {
                ETipoLineaCaja[] list = { ETipoLineaCaja.SalidaPorIngreso, ETipoLineaCaja.EntradaPorTraspaso, ETipoLineaCaja.EntradaPorTarjetaCredito, ETipoLineaCaja.Otros };
                form.SetDataSource(Library.Invoice.EnumText <ETipoLineaCaja> .GetList(list));
            }
            else
            {
                ETipoLineaCaja[] list = { ETipoLineaCaja.SalidaPorIngreso, ETipoLineaCaja.EntradaPorTraspaso, ETipoLineaCaja.EntradaPorTarjetaCredito };
                form.SetDataSource(Library.Invoice.EnumText <ETipoLineaCaja> .GetList(list));
            }

            if (form.ShowDialog(this) == DialogResult.OK)
            {
                ComboBoxSource tipo = form.Selected as ComboBoxSource;
                item.ETipoLinea = (ETipoLineaCaja)tipo.Oid;

                SetRowFormat(Lines_DGW.CurrentRow);

                Lines_BS.ResetBindings(false);
            }
        }
示例#5
0
        public ActionResult DetailGridViewPartialAddNew([ModelBinder(typeof(DevExpressEditorsBinder))] CashLine line, int transId)
        {
            var model = db.CashLines;

            line.TransId     = transId;
            ViewData["line"] = line;
            if (ModelState.IsValid)
            {
                try
                {
                    model.InsertOnSubmit(line);

                    db.SubmitChanges();
                }
                catch (Exception e)
                {
                    ViewData["GenericError"] = e.Message;
                    IWSLookUp.LogException(e);
                }
            }
            else
            {
                ViewData["GenericError"] = IWSLookUp.GetModelSateErrors(ModelState);
            }
            return(PartialView("DetailGridViewPartial", IWSLookUp.GetCashLines(transId)));
        }
示例#6
0
        public ActionResult DetailGridViewPartialUpdate([ModelBinder(typeof(DevExpressEditorsBinder))] CashLine line, int transId)
        {
            var model = db.CashLines;

            line.TransId = transId;

            ViewData["line"] = line;
            if (ModelState.IsValid)
            {
                try
                {
                    var modelItem = model.FirstOrDefault(it => it.Id == line.Id);

                    if (modelItem != null)
                    {
                        this.UpdateModel(modelItem);

                        db.SubmitChanges();
                    }
                }
                catch (Exception e)
                {
                    ViewData["GenericError"] = e.Message;
                    IWSLookUp.LogException(e);
                }
            }
            else
            {
                ViewData["GenericError"] = IWSLookUp.GetModelSateErrors(ModelState);
            }
            return(PartialView("DetailGridViewPartial", IWSLookUp.GetCashLines(transId)));
        }
示例#7
0
        /// <summary>
        /// Construye el objeto y se encarga de obtener los
        /// hijos si los tiene y se solicitan
        /// </summary>
        /// <param name="source">Objeto fuente</param>
        private void Fetch(Cash source)
        {
            try
            {
                SessionCode = source.SessionCode;

                _base.CopyValues(source);

                if (Childs)
                {
                    if (nHMng.UseDirectSQL)
                    {
                        CashLine.DoLOCK(Session());
                        string      query  = CashLines.SELECT(this);
                        IDataReader reader = nHMng.SQLNativeSelect(query, Session());
                        _lines = CashLines.GetChildList(reader, false);
                    }
                }
            }
            catch (Exception ex)
            {
                iQExceptionHandler.TreatException(ex);
            }

            MarkOld();
        }
        protected override void SetBankAccountAction()
        {
            if (!ControlsMng.IsCurrentItemValid(Lines_DGW))
            {
                return;
            }

            CashLine item = ControlsMng.GetCurrentItem(Lines_DGW) as CashLine;

            if (item.Locked)
            {
                return;
            }

            if (!new ETipoLineaCaja[]
            {
                ETipoLineaCaja.EntradaPorTraspaso,
                ETipoLineaCaja.SalidaPorIngreso
            }.Contains(item.ETipoLinea))
            {
                return;
            }

            BankAccountSelectForm form = new BankAccountSelectForm(this);

            if (form.ShowDialog(this) == DialogResult.OK)
            {
                BankAccountInfo cuenta = form.Selected as BankAccountInfo;

                item.OidCuentaBancaria = cuenta.Oid;
                item.CuentaBancaria    = cuenta.Valor;
            }
        }
示例#9
0
        public static void InsertItem(IBankLine source, long oid_caja, int sessionCode)
        {
            if (source is Payment && ((Payment)source).EEstadoPago != EEstado.Pagado)
            {
                return;
            }
            else if (source is Charge && ((Charge)source).EEstadoCobro != EEstado.Charged)
            {
                return;
            }

            switch (source.EMedioPago)
            {
            //Creamos la entrada de caja correspondiente
            case EMedioPago.Efectivo:
            {
                Cash     caja = Cash.Get(oid_caja, sessionCode);
                CashLine lc   = caja.Lines.NewItem(caja);
                lc.CopyFrom(source);
                if (source.ETipoMovimientoBanco == EBankLineType.PagoPrestamo)
                {
                    Payment pago = (Payment)source;
                    lc.Haber = pago.Importe + pago.GastosBancarios;
                }

                caja.UpdateSaldo();
                caja.SaveAsChild();
                //caja.CloseSession();
            }
            break;
            }
        }
示例#10
0
 /// <summary>Aplica las reglas de validación de usuarios al formulario.
 /// <returns>void</returns>
 /// </summary>
 protected override void ApplyAuthorizationRules()
 {
     Tabla.Visible         = CashLine.CanGetObject();
     Add_Button.Enabled    = CashLine.CanAddObject();
     Edit_Button.Enabled   = CashLine.CanEditObject();
     Delete_Button.Enabled = CashLine.CanDeleteObject();
     Print_Button.Enabled  = CashLine.CanGetObject();
     View_Button.Enabled   = CashLine.CanGetObject();
 }
        public static string SELECT_BY_CIERRE(long oid)
        {
            QueryConditions conditions = new QueryConditions();

            conditions.CierreCaja     = CierreCaja.New().GetInfo();
            conditions.CierreCaja.Oid = oid;

            return(CashLine.SELECT(conditions, true));
        }
示例#12
0
        public virtual void UpdateSaldo(DateTime date)
        {
            DebeTotal  = DebeAcumulado;
            HaberTotal = HaberAcumulado;

            if (Lines.Count == 0)
            {
                return;
            }

            int i = 0;

            for (i = 0; i < Lines.Count; i++)
            {
                CashLine item = Lines[i];

                if (item.Fecha > date)
                {
                    continue;
                }

                if (item.EEstado == EEstado.Anulado)
                {
                    item.Saldo = 0;
                    continue;
                }

                item.Saldo  = SaldoAcumulado + item.Debe - item.Haber;
                DebeTotal  += item.Debe;
                HaberTotal += item.Haber;
                break;
            }

            int last_abierto = i;

            for (int j = i + 1; j < Lines.Count; j++)
            {
                CashLine item = Lines[j];

                if (item.Fecha > date)
                {
                    continue;
                }

                if (item.EEstado == EEstado.Anulado)
                {
                    item.Saldo = 0;
                    continue;
                }

                item.Saldo  = Lines[last_abierto].Saldo + item.Debe - item.Haber;
                DebeTotal  += item.Debe;
                HaberTotal += item.Haber;

                last_abierto = j;
            }
        }
        public static string SELECT(CashInfo source)
        {
            QueryConditions conditions = new QueryConditions
            {
                Caja       = source,
                CierreCaja = CierreCajaInfo.New()
            };

            return(CashLine.SELECT(conditions, true));
        }
        public static CashLineList GetByCreditCardStatement(long oidStatement, bool childs)
        {
            QueryConditions conditions = new QueryConditions
            {
                CreditCardStatement = (oidStatement) != 0 ? CreditCardStatementInfo.New(oidStatement) : null,
                MedioPago           = EMedioPago.Tarjeta
            };

            return(GetList(CashLine.SELECT_BY_CREDIT_CARD_STATEMENT(conditions, false), childs));
        }
        public static string SELECT_BY_CAJA(long oid)
        {
            QueryConditions conditions = new QueryConditions
            {
                Caja       = Cash.New().GetInfo(),
                CierreCaja = CierreCaja.New().GetInfo()
            };

            conditions.Caja.Oid       = oid;
            conditions.CierreCaja.Oid = 0;

            return(CashLine.SELECT(conditions, true));
        }
示例#16
0
        /// <summary>
        /// Obtiene un registro de la base de datos
        /// </summary>
        /// <param name="criteria">Criterios de consulta</param>
        /// <remarks>Lo llama el DataPortal tras generar el objeto</remarks>
        private void DataPortal_Fetch(CriteriaEx criteria)
        {
            try
            {
                _base.Record.Oid = 0;
                SessionCode      = criteria.SessionCode;
                Childs           = criteria.Childs;

                if (nHMng.UseDirectSQL)
                {
                    Cash.DoLOCK(Session());
                    IDataReader reader = nHMng.SQLNativeSelect(criteria.Query, Session());

                    if (reader.Read())
                    {
                        _base.CopyValues(reader);
                    }
#if TRACE
                    ControlerBase.AppControler.Timer.Record("Caja.CopyValues");
#endif
                    if (Childs)
                    {
                        string query = string.Empty;

                        CashLine.DoLOCK(Session());
                        query  = CashLines.SELECT_BY_CAJA(Oid);
                        reader = nHMng.SQLNativeSelect(query, Session());
#if TRACE
                        ControlerBase.AppControler.Timer.Record("LineaCajas.SQLNativeSelect");
#endif
                        _lines = CashLines.GetChildList(reader);
#if TRACE
                        ControlerBase.AppControler.Timer.Record("LineaCajas.GetChildList");
#endif
                    }

                    UpdateSaldo();
#if TRACE
                    ControlerBase.AppControler.Timer.Record("UpdateSaldo");
#endif
                }
            }
            catch (Exception ex)
            {
                if (!SharedTransaction && Transaction() != null)
                {
                    Transaction().Rollback();
                }
                iQExceptionHandler.TreatException(ex, new object[] { criteria.Query });
            }
        }
示例#17
0
        protected override void SetRowFormat(DataGridViewRow row)
        {
            if (!row.Displayed)
            {
                return;
            }
            if (row.IsNewRow)
            {
                return;
            }
            CashLine item = (CashLine)row.DataBoundItem;

            if (item.Locked)
            {
                row.ReadOnly = true;
            }

            switch (item.ETipoLinea)
            {
            case ETipoLineaCaja.SalidaPorIngreso:
                row.Cells[Debe.Index].ReadOnly         = true;
                row.Cells[Haber.Index].ReadOnly        = false;
                row.Cells[Haber.Index].Style.BackColor = Face.ControlTools.Instance.BasicStyle.BackColor;
                row.Cells[Haber.Index].Style.ForeColor = Face.ControlTools.Instance.BasicStyle.ForeColor;
                item.Debe = 0;
                break;

            case ETipoLineaCaja.EntradaPorTraspaso:
            case ETipoLineaCaja.EntradaPorTarjetaCredito:
                row.Cells[Debe.Index].ReadOnly        = false;
                row.Cells[Haber.Index].ReadOnly       = true;
                row.Cells[Debe.Index].Style.BackColor = Face.ControlTools.Instance.BasicStyle.BackColor;
                row.Cells[Debe.Index].Style.ForeColor = Face.ControlTools.Instance.BasicStyle.ForeColor;
                item.Haber = 0;
                break;

            case ETipoLineaCaja.Otros:
                row.Cells[Debe.Index].ReadOnly         = false;
                row.Cells[Haber.Index].ReadOnly        = false;
                row.Cells[Debe.Index].Style.BackColor  = Face.ControlTools.Instance.BasicStyle.BackColor;
                row.Cells[Haber.Index].Style.BackColor = Face.ControlTools.Instance.BasicStyle.BackColor;
                row.Cells[Debe.Index].Style.ForeColor  = Face.ControlTools.Instance.BasicStyle.ForeColor;
                row.Cells[Haber.Index].Style.ForeColor = Face.ControlTools.Instance.BasicStyle.ForeColor;

                break;
            }

            Face.Common.ControlTools.Instance.SetRowColorIM(row, item.EEstado);
        }
示例#18
0
        public virtual void UpdateSaldo()
        {
            if (LineaCajas.Count == 0)
            {
                return;
            }

            SaldoInicial = SaldoAcumulado - Saldo;
            Debe         = 0;
            Haber        = 0;

            int i = 0;

            for (i = 0; i < LineaCajas.Count; i++)
            {
                CashLine item = LineaCajas[i];

                if (item.EEstado == EEstado.Anulado)
                {
                    LineaCajas[i].Saldo = 0;
                    continue;
                }

                item.Saldo = SaldoInicial + item.Debe - item.Haber;
                Debe      += item.Debe;
                Haber     += item.Haber;
                break;
            }

            int last_abierto = i;

            for (int j = i + 1; j < LineaCajas.Count; j++)
            {
                CashLine item = LineaCajas[j];

                if (item.EEstado == EEstado.Anulado)
                {
                    item.Saldo = 0;
                    continue;
                }

                item.Saldo   = LineaCajas[last_abierto].Saldo + item.Debe - item.Haber;
                Debe        += item.Debe;
                Haber       += item.Haber;
                last_abierto = j;
            }

            SaldoFinal = SaldoInicial + Saldo;
        }
        protected override void SetRowFormat(DataGridViewRow row)
        {
            if (row.IsNewRow)
            {
                return;
            }
            CashLine item = (CashLine)row.DataBoundItem;

            if (item.Locked)
            {
                row.ReadOnly = true;
            }

            Face.Common.ControlTools.Instance.SetRowColorIM(row, item.EEstado);
        }
        protected override void AddLineaAction()
        {
            CashLine item = _entity.Lines.NewItem(_entity);

            Lines_BS.DataSource = _entity.Lines;

            Lines_BS.MoveLast();

            if (!_linea_libre)
            {
                item.ETipoLinea = ETipoLineaCaja.SalidaPorIngreso;
            }

            SetTipo();
        }
        public static CashLineList GetList(string query, bool childs)
        {
            CriteriaEx criteria = CashLine.GetCriteria(CreditCardStatement.OpenSession());

            criteria.Childs = childs;

            if (nHManager.Instance.UseDirectSQL)
            {
                criteria.Query = query;
            }

            CashLineList list = DataPortal.Fetch <CashLineList>(criteria);

            CloseSession(criteria.SessionCode);
            return(list);
        }
示例#22
0
        /// <summary>
        /// Obtiene un registro de la base de datos
        /// </summary>
        /// <param name="criteria">Criterios de consulta</param>
        /// <remarks>Lo llama el DataPortal tras generar el objeto</remarks>
        private void DataPortal_Fetch(CriteriaEx criteria)
        {
            try
            {
                _base.Record.Oid = 0;
                SessionCode      = criteria.SessionCode;
                Childs           = criteria.Childs;

                if (nHMng.UseDirectSQL)
                {
                    CierreCaja.DoLOCK(Session());
                    IDataReader reader = nHMng.SQLNativeSelect(criteria.Query, Session());

                    if (reader.Read())
                    {
                        _base.CopyValues(reader);
                    }

                    if (Childs)
                    {
                        string query = string.Empty;

                        CashLine.DoLOCK(Session());
                        query   = CashLines.SELECT_BY_CIERRE(this.Oid);
                        reader  = nHMng.SQLNativeSelect(query, Session());
                        _lineas = CashLines.GetChildList(reader);
                    }
                }

                UpdateSaldo();
                MarkOld();
            }
            catch (Exception ex)
            {
                if (!SharedTransaction && Transaction() != null)
                {
                    Transaction().Rollback();
                }
                iQExceptionHandler.TreatException(ex);
            }
        }
        protected override void SetLineTypeAction()
        {
            CashLine item = Lines_DGW.CurrentRow.DataBoundItem as CashLine;

            if (item.Locked)
            {
                return;
            }

            if (new ETipoLineaCaja[]
            {
                ETipoLineaCaja.EntradaPorCobro,
                ETipoLineaCaja.SalidaPorIngreso,
                ETipoLineaCaja.EntradaPorTarjetaCredito
            }.Contains(item.ETipoLinea))
            {
                return;
            }

            SetTipo();
        }
        protected override void SetCreditCardAction()
        {
            if (!ControlsMng.IsCurrentItemValid(Lines_DGW))
            {
                return;
            }

            CashLine item = ControlsMng.GetCurrentItem(Lines_DGW) as CashLine;

            if (item.Locked)
            {
                return;
            }

            if (!new ETipoLineaCaja[]
            {
                ETipoLineaCaja.EntradaPorTarjetaCredito
            }.Contains(item.ETipoLinea))
            {
                return;
            }

            CreditCardSelectForm form = new CreditCardSelectForm(this);

            if (form.ShowDialog(this) == DialogResult.OK)
            {
                CreditCardInfo credit_card = form.Selected as CreditCardInfo;
                if (credit_card.ETipoTarjeta != ETipoTarjeta.Credito)
                {
                    return;
                }

                item.OidCreditCard     = credit_card.Oid;
                item.CreditCard        = credit_card.Nombre;
                item.OidCuentaBancaria = credit_card.OidCuentaBancaria;
                item.CuentaBancaria    = credit_card.CuentaBancaria;

                Lines_BS.ResetBindings(false);
            }
        }
示例#25
0
        private void DataPortal_Delete(CriteriaCs criteria)
        {
            CierreCaja obj = null;

            try
            {
                // Iniciamos la conexion y la transaccion
                obj = CierreCaja.Get(criteria.Oid, true);

                //Liberamos las lineas de caja del cierre
                QueryConditions conditions = new QueryConditions
                {
                    CierreCaja = obj.GetInfo(false),
                };

                nHMng.SQLNativeExecute(CashLine.UPDATE_LIBERA_LINEAS_A(conditions), obj.Session());
                nHMng.SQLNativeExecute(CashLine.UPDATE_LIBERA_LINEAS_B(conditions), obj.Session());

                obj.Session().Delete(obj.Base.Record);
                obj.Transaction().Commit();
            }
            catch (Exception ex)
            {
                if ((obj != null) && (obj.Transaction() != null))
                {
                    obj.Transaction().Rollback();
                }
                iQExceptionHandler.TreatException(ex);
            }
            finally
            {
                if (obj != null)
                {
                    obj.CloseSession();
                }
            }
        }
示例#26
0
        /// <summary>
        /// Crea los conceptos de factura asociados a un albarán
        /// </summary>
        /// <param name="source"></param>
        public virtual void Compact(OutputInvoice invoice)
        {
            if (this.Count == 0)
            {
                return;
            }

            OutputDelivery main_albaran = null;
            Cash           caja         = null;

            try
            {
                List <long> oid_list = new List <long>();

                foreach (AlbaranFactura item in this)
                {
                    oid_list.Add(item.OidAlbaran);
                }

                OutputDeliveryList albaranes = OutputDeliveryList.GetList(oid_list, true);
                main_albaran = OutputDelivery.Get(oid_list[0], true, invoice.SessionCode);

                foreach (AlbaranFactura af in this)
                {
                    if (af.OidAlbaran == main_albaran.Oid)
                    {
                        continue;
                    }

                    OutputDeliveryInfo source = albaranes.GetItem(af.OidAlbaran);
                    main_albaran.Merge(source);
                }

                main_albaran.Compact();

                SortedBindingList <AlbaranFactura> sorted_list = this.GetSortedList("CodigoAlbaran", ListSortDirection.Ascending);
                OutputDeliveryInfo first_albaran = OutputDeliveryInfo.Get(sorted_list[0].OidAlbaran, ETipoEntidad.Cliente, false);

                main_albaran.CopyFrom(invoice);
                main_albaran.Codigo = first_albaran.Codigo;
                main_albaran.Serial = first_albaran.Serial;
                main_albaran.Save();

                ToDelete = new List <OutputDeliveryInfo>();

                for (int i = 1; i < oid_list.Count; i++)
                {
                    Remove(GetItemByAlbaran(oid_list[i]).Oid);
                    ToDelete.Add(albaranes.GetItem(oid_list[i]));
                }

                CashLine.DeleteByAlbaranList(albaranes.GetListInfo(), ModulePrincipal.GetCajaTicketsSetting());
                Ticket.DeleteFromList(albaranes.GetListInfo());

                //Actualizamos la caja de Tickets
                caja = Cash.Get(ModulePrincipal.GetCajaTicketsSetting(), true, invoice.SessionCode);
                caja.UpdateSaldo();
                caja.SaveAsChild();

                AlbaranFactura ab = GetItemByAlbaran(main_albaran.Oid);
                ab.CodigoAlbaran = main_albaran.Codigo;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                Cache.Instance.Remove(typeof(ClienteList));
                Cache.Instance.Remove(typeof(ProductList));
            }
        }
示例#27
0
        public ActionResult CashToDb(string[] files)
        {
            const string providerXLS   = "Provider=Microsoft.ACE.OLEDB.12.0.;Data Source=";
            const string extensionXLS  = ";Extended Properties=\"Excel 8.0;HDR=NO;IMEX=2\"";
            const string providerXLSX  = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=";
            const string extensionXLSX = ";Extended Properties=\"Excel 12.0 Xml;HDR=NO;IMEX=2\"";
            string       companyId     = (string)Session["CompanyID"];
            //foreach (var item in files)
            //{
            string fullPath = files[0].ToString();
            string msg      = string.Empty;
            string option   = string.Empty;
            string fileName = fullPath.Substring(fullPath.IndexOf(@"\") + 1);

            if (fileName.Equals(null))
            {
                return(View("Cash"));
            }
            int     count              = 0;
            int     rowCount           = 0;
            string  sheetName          = "";
            int     errorAtLine        = 0;
            int     transId            = 0;
            int     notImported        = 0;
            int     readReportFrom     = 6;
            int     readPeriodFrom     = 3;
            decimal monthInitialReport = 0;
            string  sYear              = String.Empty;
            string  sMonth             = String.Empty;

            string Headers = String.Empty;

            try
            {
                string path = Path.Combine(Server.MapPath(Helper.RootFolder), fileName);

                string extension = Path.GetExtension(fileName).ToLower();

                if (extension == ".xls" || extension == ".xlsx")
                {
                    string connectionString = String.Empty;

                    DataTable dataTable = new DataTable();

                    if (extension == ".xls")
                    {
                        connectionString = providerXLS + path + extensionXLS;
                    }
                    else if (extension == ".xlsx")
                    {
                        connectionString = providerXLSX + path + extensionXLSX;
                    }

                    OleDbConnection oleDBConnection = new OleDbConnection(connectionString);

                    oleDBConnection.Open();
                    dataTable = oleDBConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                    oleDBConnection.Close();

                    if (dataTable == null)
                    {
                        return(null);
                    }

                    String[] excelSheets = new String[dataTable.Rows.Count];

                    string cashAccountId = IWSLookUp.GetCashAccountId();

                    string currency = IWSLookUp.DefaultCurrency();

                    foreach (DataRow row in dataTable.Rows)
                    {
                        excelSheets[count] = row["TABLE_NAME"].ToString();

                        sheetName = excelSheets[count].Replace("\'", "");

                        string query = $"Select * from [{excelSheets[count]}]";

                        DataSet dataSet = new DataSet();

                        using (OleDbDataAdapter dataAdapter = new OleDbDataAdapter(query, oleDBConnection))
                        {
                            dataAdapter.Fill(dataSet);
                        }

                        if (!(dataSet.Tables[0].Rows.Count > 0))
                        {
                            string x = $"{IWSLocalResource.GenericError}{Environment.NewLine}{IWSLocalResource.DataFormat} ";

                            var s = new { Description = x };

                            return(Json(s));
                        }
                        //if (headers.SequenceEqual(columnNames))
                        //{

                        List <CashLine> CashLine = new List <CashLine>();

                        for (int i = 1; i < dataSet.Tables[0].Rows.Count; i++)
                        {
                            #region Cash Header

                            if (i == readPeriodFrom)
                            {
                                sYear  = dataSet.Tables[0].Rows[i][4].ToString();
                                sMonth = dataSet.Tables[0].Rows[i][1].ToString();
                            }
                            if (i == readReportFrom)
                            {
                                monthInitialReport = Convert.ToDecimal(dataSet.Tables[0].Rows[i][2]);
                            }

                            #endregion

                            #region Cash Lines

                            errorAtLine += 1;

                            if (i > readReportFrom)
                            {
                                if (DateTime.TryParse(dataSet.Tables[0].Rows[i][5].ToString(), out DateTime datumValue))
                                {
                                    CashLine cashLine = new CashLine
                                    {
                                        Einnahmen    = dataSet.Tables[0].Rows[i][0] == DBNull.Value ? 0 : Convert.ToDecimal(dataSet.Tables[0].Rows[i][0]),
                                        Ausgaben     = dataSet.Tables[0].Rows[i][1] == DBNull.Value ? 0 : Convert.ToDecimal(dataSet.Tables[0].Rows[i][1]),
                                        Bestand      = dataSet.Tables[0].Rows[i][2] == DBNull.Value ? 0 : Convert.ToDecimal(dataSet.Tables[0].Rows[i][2]),
                                        Currency     = currency,
                                        konto        = cashAccountId,
                                        Gegenkonto   = dataSet.Tables[0].Rows[i][3] == DBNull.Value ? null : dataSet.Tables[0].Rows[i][3].ToString(),
                                        BelegNr      = dataSet.Tables[0].Rows[i][4] == DBNull.Value ? null : dataSet.Tables[0].Rows[i][4].ToString(),
                                        Datum        = datumValue,
                                        SteuerSatz   = dataSet.Tables[0].Rows[i][6] == DBNull.Value ? null : dataSet.Tables[0].Rows[i][6].ToString(),
                                        Beschreibung = dataSet.Tables[0].Rows[i][7] == DBNull.Value ? null : dataSet.Tables[0].Rows[i][7].ToString(),
                                        CostCenter   = dataSet.Tables[0].Rows[i][8] == DBNull.Value ? null : dataSet.Tables[0].Rows[i][8].ToString()
                                    };

                                    CashLine.Add(cashLine);
                                }
                                else
                                {
                                    notImported += 1;
                                }
                            }

                            #endregion
                        }
                        errorAtLine = 0;
                        if (db.Cashes.Any(m => m.SYear.Equals(sYear) && m.SMonth.Equals(sMonth) && m.CompanyId.Equals(companyId)))
                        {
                            Cash entity = db.Cashes.FirstOrDefault(n => n.CompanyId.Equals(companyId) && n.SYear.Equals(sYear) && n.SMonth.Equals(sMonth));
                            if (entity.IsValidated.Equals(false))
                            {
                                db.Cashes.DeleteOnSubmit(entity);
                                db.SubmitChanges(System.Data.Linq.ConflictMode.FailOnFirstConflict);
                            }
                        }

                        count += 1;

                        Cash cash = new Cash
                        {
                            Account     = cashAccountId,
                            SYear       = sYear,
                            SMonth      = sMonth,
                            Report      = monthInitialReport,
                            IsValidated = false,
                            CompanyId   = companyId
                        };

                        db.Cashes.InsertOnSubmit(cash);
                        db.SubmitChanges();
                        transId     = db.Cashes.DefaultIfEmpty().Max(m => m == null ? 0 : m.Id);
                        notImported = 0;

                        foreach (CashLine cashLine in CashLine)
                        {
                            cashLine.TransId = transId;
                            db.CashLines.InsertOnSubmit(cashLine);
                            rowCount += 1;
                        }
                        //}
                    }
                    db.SubmitChanges(System.Data.Linq.ConflictMode.ContinueOnConflict);
                }

                if (rowCount > 0)
                {
                    msg = $"{rowCount} {IWSLocalResource.Imported} {option} ";
                }
                else
                {
                    msg = $"{IWSLocalResource.ImportedNone}";
                }
            }
            catch (Exception ex)
            {
                IWSLookUp.LogException(ex);

                msg = ex.Message;
                if (errorAtLine > 0)
                {
                    msg = $"{msg} {Environment.NewLine} {sheetName}: {errorAtLine+1}";
                }
            }
            //}
            var Message = new { Description = msg };

            return(Json(Message));
        }
示例#28
0
        public static void EditItem(IBankLine source, IBankLineInfo oldSource, long oid_caja, int sessionCode)
        {
            if (source.EEstado == EEstado.Anulado ||
                (source is Payment && (source as Payment).EEstadoPago != EEstado.Pagado) ||
                (source is Charge && (source as Charge).EEstadoCobro != EEstado.Charged))
            {
                //Anulamos la salida de caja correspondiente
                AnulaItem(source, oid_caja, sessionCode);
                return;
            }

            switch (source.EMedioPago)
            {
            case EMedioPago.Efectivo:
            {
                Cash     caja = Cash.Get(oid_caja, sessionCode);
                CashLine lc   = null;

                switch (source.ETipoMovimientoBanco)
                {
                case EBankLineType.PagoFactura:
                case EBankLineType.PagoGasto:
                case EBankLineType.PagoNomina:
                case EBankLineType.Prestamo:
                case EBankLineType.PagoPrestamo:

                    lc = caja.Lines.GetItemByPayment(source.Oid);
                    break;

                case EBankLineType.Cobro:

                    lc = caja.Lines.GetItemByCharge(source.Oid);
                    break;
                }

                if (lc == null)
                {
                    CashLineInfo info = null;

                    switch (source.ETipoMovimientoBanco)
                    {
                    case EBankLineType.PagoFactura:
                    case EBankLineType.PagoGasto:
                    case EBankLineType.PagoNomina:
                    case EBankLineType.Prestamo:

                        info = CashLineInfo.GetByPago(source.Oid);
                        break;

                    case EBankLineType.Cobro:

                        info = CashLineInfo.GetByCobro(source.Oid);
                        break;
                    }

                    if (info != null && info.OidCierre != 0)
                    {
                        throw new iQInfoException(Resources.Messages.LINEA_INCLUIDA_CIERRE, string.Empty, iQExceptionCode.WARNING);
                    }

                    if ((source is Payment &&
                         (oldSource as PaymentInfo).EEstadoPago == EEstado.Pendiente &&
                         (source as Payment).EEstadoPago == EEstado.Pagado) ||
                        (source is Charge &&
                         (oldSource as ChargeInfo).EEstadoCobro == EEstado.Pendiente &&
                         (source as Charge).EEstadoCobro == EEstado.Charged))
                    {
                        InsertItem(source, sessionCode);
                    }
                    return;
                }

                lc.CopyFrom(source);
                if (source.ETipoMovimientoBanco == EBankLineType.PagoPrestamo)
                {
                    Payment pago = (Payment)source;
                    lc.Haber = pago.Importe + pago.GastosBancarios;
                }
                caja.UpdateSaldo();
                caja.SaveAsChild();
            }
            break;
            }
        }
示例#29
0
        public static void AnulaItem(IBankLine source, long oid_caja, int sessionCode)
        {
            switch (source.EMedioPago)
            {
            //Anulamos la salida de caja correspondiente
            case EMedioPago.Efectivo:
            {
                Cash     caja = Cash.Get(oid_caja, sessionCode);
                CashLine lc   = null;

                switch (source.ETipoMovimientoBanco)
                {
                case EBankLineType.PagoFactura:
                case EBankLineType.PagoGasto:
                case EBankLineType.PagoNomina:
                case EBankLineType.Prestamo:

                    lc = caja.Lines.GetItemByPayment(source.Oid);
                    break;

                case EBankLineType.Cobro:

                    lc = caja.Lines.GetItemByCharge(source.Oid);
                    break;
                }

                if (lc != null)
                {
                    lc.EEstado = EEstado.Anulado;
                    caja.UpdateSaldo();
                    caja.SaveAsChild();
                    //caja.CloseSession();
                }
                else
                {
                    CashLineInfo info = null;

                    switch (source.ETipoMovimientoBanco)
                    {
                    case EBankLineType.PagoFactura:
                    case EBankLineType.PagoGasto:
                    case EBankLineType.PagoNomina:
                    case EBankLineType.Prestamo:

                        info = CashLineInfo.GetByPago(source.Oid);
                        break;

                    case EBankLineType.Cobro:

                        info = CashLineInfo.GetByCobro(source.Oid);
                        break;
                    }

                    if (info != null && info.OidCierre != 0)
                    {
                        throw new iQInfoException(Resources.Messages.LINEA_INCLUIDA_CIERRE);
                    }
                }
            }
            break;
            }
        }
 public static string SELECT(QueryConditions conditions)
 {
     return(CashLine.SELECT(conditions, false));
 }