コード例 #1
0
        private int DeleteTblGlCashTransactionHeader(TblGlCashTransactionHeader row, int index, string company)
        {
            using (var entity = new ccnewEntities(GetSqlConnectionString(company)))
            {
                var query = (from e in entity.TblGlCashTransactionHeaders
                             where e.Iserial == row.Iserial
                             select e).SingleOrDefault();
                if (query != null)
                {
                    entity.DeleteObject(query);
                }

                entity.SaveChanges();
            }
            return(row.Iserial);
        }
コード例 #2
0
        private TblGlCashTransactionHeader UpdateOrInsertTblGlCashTransactionHeader(
            TblGlCashTransactionHeader newRow, bool save, int index, int user, bool approve, out int outindex,
            string company)
        {
            using (var scope = new TransactionScope())
            {
                #region Code
                //bool ww = DateTime.Now > DateTime.Now.AddDays(1);

                outindex = index;
                using (var entity = new ccnewEntities(GetSqlConnectionString(company)))
                {
                    var GlCashsetting = entity.TblGlCashTypeSettings.Include(nameof(TblGlCashTypeSetting.TblJournal1)).FirstOrDefault(x => x.Iserial == newRow.TblGlCashTypeSetting);
                    if (save)
                    {
                        try
                        {
                            var firstrow       = newRow.TblGlCashTransactionDetails.FirstOrDefault();
                            var entitySelected =
                                entity.Entities.FirstOrDefault(
                                    x => x.TblJournalAccountType == firstrow.TblJournalAccountType &&
                                    x.Iserial == firstrow.EntityAccount);
                            // newRow.Description = entitySelected.Ename;
                        }
                        catch (Exception)
                        {
                        }

                        newRow.CreationDate = DateTime.Now;
                        newRow.CreatedBy    = user;
                        //var setting =
                        //    entity.TblGlCashTypeSettings.FirstOrDefault(
                        //        x => x.Iserial == newRow.TblGlCashTypeSetting).TblSequence;
                        var journal = entity.TblSequences.FirstOrDefault(x => x.Iserial == GlCashsetting.TblSequence);
                        // var journal = entity.TblSequences.FirstOrDefault(x => x.Iserial == GlCashsetting.TblSequence);
                        int temp = 0;
                        newRow.Code = SharedOperation.HandelSequence(newRow.Code, journal, "TblLedgerHeader", company, 0,
                                                                     newRow.DocDate.Value.Month, newRow.DocDate.Value.Year, out temp);
                        newRow.CreationDate = DateTime.Now;
                        entity.TblGlCashTransactionHeaders.AddObject(newRow);
                    }
                    else
                    {
                        var oldRow = (from e in entity.TblGlCashTransactionHeaders
                                      where e.Iserial == newRow.Iserial
                                      select e).SingleOrDefault();
                        if (oldRow != null)
                        {
                            foreach (var newDetailRow in newRow.TblGlCashTransactionDetails.ToList())
                            {
                                if (newDetailRow.Iserial == 0)
                                {
                                    newDetailRow.TblGlCashTransactionHeader1 = null;
                                    newDetailRow.TblGlCashTransactionHeader  = oldRow.Iserial;
                                    entity.TblGlCashTransactionDetails.AddObject(newDetailRow);
                                }
                                else
                                {
                                    var oldRowDetail = (from e in entity.TblGlCashTransactionDetails
                                                        where e.Iserial == newDetailRow.Iserial
                                                        select e).SingleOrDefault();
                                    if (oldRowDetail != null)
                                    {
                                        foreach (var item in newDetailRow.TblGlCashTransactionDetailCostCenters.ToList())
                                        {
                                            if (item.Iserial == 0)
                                            {
                                                item.TblGlCashTransactionDetail1 = null;
                                                item.TblGlCashTransactionDetail  = newDetailRow.Iserial;
                                                entity.TblGlCashTransactionDetailCostCenters.AddObject(item);
                                            }
                                        }

                                        GenericUpdate(oldRowDetail, newDetailRow, entity);
                                    }
                                }
                            }
                            GenericUpdate(oldRow, newRow, entity);
                        }
                    }
                    entity.SaveChanges();
                    if (approve)
                    {
                        var ledgerheader = entity.TblLedgerHeaders.Any(
                            x => x.TblJournalLink == newRow.Iserial && x.TblTransactionType == 11);
                        if (!ledgerheader)
                        {
                            try
                            {
                                PostTblGlCashTransactionHeader(newRow.Iserial, user, company, newRow.Code);
                            }
                            catch (Exception)
                            {
                                var ledgerToDelete = entity.TblLedgerHeaders.Where(
                                    x => x.TblJournalLink == newRow.Iserial && x.TblTransactionType == 11).ToList();
                                foreach (var ledgerRow in ledgerToDelete)
                                {
                                    entity.TblLedgerHeaders.DeleteObject(ledgerRow);
                                }
                                throw;
                            }
                            newRow.Approved = true;
                        }
                    }

                    try
                    {
                        entity.SaveChanges();
                    }

                    catch (Exception ex)
                    {
                        if (ExceptionContainsErrorCode(ex, 2627))
                        {
                            entity.Detach(newRow);
                            UpdateOrInsertTblGlCashTransactionHeader(newRow, save, index, user, approve, out outindex, company);
                        }
                        else
                        {
                            throw ex;
                        }
                    }
                }

                #endregion Code
                scope.Complete();
                return(newRow);
            }
        }