示例#1
0
文件: Ledger.cs 项目: Osama91/CCWFM
 public TblLedgerDetailCostCenter UpdateOrInsertTblLedgerDetailCostCenters(TblLedgerDetailCostCenter newRow, bool save, int index, out int outindex, int user, string company, bool validate = false)
 {
     outindex = index;
     using (var entity = new ccnewEntities(GetSqlConnectionString(company)))
     {
         if (validate)
         {
             ValidateJournalSetting(entity, newRow, user);
         }
         if (save)
         {
             entity.TblLedgerDetailCostCenters.AddObject(newRow);
         }
         else
         {
             var oldRow = (from e in entity.TblLedgerDetailCostCenters
                           where e.Iserial == newRow.Iserial
                           select e).SingleOrDefault();
             if (oldRow != null)
             {
                 GenericUpdate(oldRow, newRow, entity);
             }
         }
         entity.SaveChanges();
         return(newRow);
     }
 }
示例#2
0
文件: Ledger.cs 项目: Osama91/CCWFM
        private void ValidateJournalSetting(ccnewEntities entity, TblLedgerDetailCostCenter newRow, int user)
        {
            var SettingExist = entity.TblAuthUserJournalSettings.Any(w => w.TblAuthUser == user);

            if (SettingExist)
            {
                var journal  = entity.TblLedgerMainDetails.Include("TblLedgerHeader1").FirstOrDefault(w => w.Iserial == newRow.TblLedgerMainDetail).TblLedgerHeader1.TblJournal;
                var Settings = entity.TblJournalSettingCostCenters.Any(w => w.TblCostCenter == newRow.TblCostCenter &&
                                                                       w.TblJournalSetting1.TblAuthUserJournalSettings.Any(e => e.TblAuthUser == user));
                if (!Settings)
                {
                    throw new FaultException("You are not authorized to use this Cost Center");
                }
            }
        }
示例#3
0
文件: Ledger.cs 项目: Osama91/CCWFM
        private int DeleteTblLedgerDetailCostCenter(TblLedgerDetailCostCenter row, int index, string company)
        {
            using (var entity = new ccnewEntities(GetSqlConnectionString(company)))
            {
                var query = (from e in entity.TblLedgerDetailCostCenters
                             where e.Iserial == row.Iserial
                             select e).SingleOrDefault();
                if (query != null)
                {
                    entity.DeleteObject(query);
                }

                entity.SaveChanges();
            }
            return(row.Iserial);
        }
示例#4
0
文件: Ledger.cs 项目: Osama91/CCWFM
        private void UpdateCheckFromTransaction(TblLedgerMainDetail row, ccnewEntities entity)
        {
            var query = (from e in entity.TblLedgerMainDetails.Include("TblBankCheque1")
                         where e.Iserial == row.Iserial
                         select e).FirstOrDefault();

            if (query != null && query.TblBankCheque != null && query.TblJournalAccountType != 6 && query.TblJournalAccountType != 0)
            {
                var tblBankCheque1 = (from e in entity.TblBankCheques.Include("TblBankChequeCostCenters")
                                      where e.Iserial == row.TblBankCheque
                                      select e).FirstOrDefault();

                if (tblBankCheque1 != null)
                {
                    if (query.Amount != null)
                    {
                        tblBankCheque1.Amount = (double)query.Amount;
                    }
                    tblBankCheque1.TblJournalAccountType = query.TblJournalAccountType;
                    tblBankCheque1.EntityAccount         = query.EntityAccount;

                    if (tblBankCheque1.TblBankChequeCostCenters != null)
                    {
                        foreach (var variable in tblBankCheque1.TblBankChequeCostCenters)
                        {
                            var costcenterExsist =
                                entity.TblLedgerDetailCostCenters.Any(x => x.TblLedgerMainDetail == query.Iserial);
                            if (!costcenterExsist)
                            {
                                var costCenterrow = new TblLedgerDetailCostCenter
                                {
                                    Ratio               = variable.Ratio,
                                    Amount              = variable.Amount,
                                    TblCostCenter       = variable.TblCostCenter,
                                    TblCostCenterType   = variable.TblCostCenterType,
                                    TblLedgerMainDetail = row.Iserial
                                };
                                entity.AddToTblLedgerDetailCostCenters(costCenterrow);
                            }
                        }
                    }
                }

                entity.SaveChanges();
            }
        }
示例#5
0
        private TblRecInvHeaderProd PostInv(TblRecInvHeaderProd row, int user, string company)
        {
            using (var scope = new TransactionScope())
            {
                short?Lang = 0;
                using (var entity = new WorkFlowManagerDBEntities())
                {
                    var firstOrDefault = entity.TblAuthUsers.FirstOrDefault(x => x.Iserial == user);
                    if (firstOrDefault != null)
                    {
                        Lang = firstOrDefault.CurrLang;
                    }
                    entity.CommandTimeout = 0;
                    var query = entity.TblRecInvHeaderProds.FirstOrDefault(x => x.Iserial == row.Iserial);

                    string desc = "Purchase TransNo " + row.SupplierInv;

                    if (row.TblRecInvHeaderTypeProd == 2)
                    {
                        desc = "Return Purchase TransNo " + row.SupplierInv;
                    }
                    if (Lang == 0)
                    {
                        desc = "فاتورة المشتريات رقم " + row.SupplierInv;
                        if (row.TblRecInvHeaderTypeProd == 2)
                        {
                            desc = " فاتورة مرتجع المشتريات رقم " + row.SupplierInv;
                        }
                    }
                    var markuptrans =
                        entity.TblMarkupTransProds.Include("TblMarkupProd1.TblMarkupGroupProd1")
                        .Where(x => x.TblRecInv == row.Iserial && x.Type == 0);

                    var cost = entity.TblRecInvMainDetailProds.Where(x => x.TblRecInvHeaderProd == row.Iserial).Sum(w => w.Cost * w.Qty);

                    double totalWithItemEffect    = 0;
                    double totalWithoutItemEffect = 0;
                    foreach (var variable in markuptrans)
                    {
                        if (variable.TblMarkupProd1.ItemEffect == false)
                        {
                            if (variable.MiscValueType == 0)
                            {
                                totalWithoutItemEffect = (double)(totalWithoutItemEffect + (cost * (variable.MiscValue / 100)));
                            }
                            else
                            {
                                totalWithoutItemEffect = (double)(totalWithoutItemEffect + variable.MiscValue);
                            }
                        }
                        else
                        {
                            if (variable.MiscValueType == 0)
                            {
                                totalWithItemEffect = (double)(totalWithItemEffect + (cost * (variable.MiscValue / 100)));
                            }
                            else
                            {
                                totalWithItemEffect = (double)(totalWithItemEffect + variable.MiscValue);
                            }
                        }
                    }
                    if (query != null)
                    {
                        query.MiscWithoutItemEffect = totalWithoutItemEffect;
                        query.Misc = totalWithItemEffect;
                        if (totalWithItemEffect != 0)
                        {
                            var queryDetail =
                                entity.TblRecInvMainDetailProds.Where(x => x.TblRecInvHeaderProd == row.Iserial).ToList();
                            foreach (var variable in queryDetail)
                            {
                                variable.Misc = (variable.Cost / cost) * totalWithItemEffect;
                            }
                        }
                        entity.SaveChanges();
                        if (query != null)
                        {
                            query.Status   = 1;
                            query.TblUser  = user;
                            query.PostDate = DateTime.Now;
                            using (var db = new ccnewEntities(GetSqlConnectionString(company)))
                            {
                                var journal   = db.tblChainSetupTests.FirstOrDefault(x => x.sGlobalSettingCode == "GLPurchaseJournal").sSetupValue;
                                var tablename = db.tblChainSetupTests.FirstOrDefault(
                                    x => x.sGlobalSettingCode == "GlItemGroupTableName").sSetupValue;

                                int journalint = db.TblJournals.FirstOrDefault(x => x.Code == journal).Iserial;

                                var newLedgerHeaderProdRow = new TblLedgerHeader
                                {
                                    CreatedBy          = user,
                                    CreationDate       = DateTime.Now,
                                    Description        = desc,
                                    DocDate            = row.TransDate,
                                    TblJournal         = journalint,
                                    TblTransactionType = 100,
                                    TblJournalLink     = query.Iserial
                                };
                                int temp;
                                var glserive = new GlService();
                                glserive.UpdateOrInsertTblLedgerHeaders(newLedgerHeaderProdRow, true, 0, out temp, user, company);

                                var sqlParam = new List <SqlParameter>
                                {
                                    new SqlParameter
                                    {
                                        ParameterName = "Table_Name",
                                        Value         = tablename,
                                        SqlDbType     = SqlDbType.NVarChar
                                    },

                                    new SqlParameter
                                    {
                                        ParameterName = "Iserial",
                                        Value         = row.Iserial.ToString(CultureInfo.InvariantCulture),
                                        SqlDbType     = SqlDbType.NVarChar
                                    },
                                };
                                var list = entity.ExecuteStoreQuery <GlGroupsDtp>("exec GlRecinvPostingToGl @Table_Name, @Iserial",
                                                                                  sqlParam.ToArray()).ToList();

                                #region MarkUp

                                foreach (var rr in markuptrans)
                                {
                                    var currencyrow = db.TblCurrencyTests.First(w => w.Iserial == rr.TblCurrency);
                                    var glAccount   =
                                        db.Entities.FirstOrDefault(
                                            x => x.Iserial == rr.TblMarkupProd && x.scope == 0 && x.TblJournalAccountType == 9).AccountIserial;
                                    var vendorAccountMarkUp =
                                        db.Entities.FirstOrDefault(
                                            x => x.Iserial == rr.EntityAccount && x.scope == 0 && x.TblJournalAccountType == rr.TblJournalAccountType);

                                    var    drorCr = true;
                                    double?total  = 0;
                                    if (rr.MiscValueType == 0)
                                    {
                                        total = (total + cost * (rr.MiscValue / 100)) * rr.TblMarkupProd1.TblMarkupGroupProd1.Direction;
                                    }
                                    else
                                    {
                                        total = (total + rr.MiscValue) * rr.TblMarkupProd1.TblMarkupGroupProd1.Direction;
                                    }
                                    if (total > 0)
                                    {
                                        drorCr = false;
                                    }
                                    var markupdes = rr.TblMarkupProd1.Ename + row.SupplierInv;
                                    if (Lang == 0)
                                    {
                                        markupdes = rr.TblMarkupProd1.Aname + row.SupplierInv;
                                    }
                                    decimal totalModified = (decimal)total;
                                    if (total < 0)
                                    {
                                        totalModified = (decimal)(total * -1);
                                    }
                                    var markupVendorDiscount = new TblLedgerMainDetail();

                                    markupVendorDiscount = new TblLedgerMainDetail
                                    {
                                        Amount                = totalModified,
                                        Description           = markupdes,
                                        ExchangeRate          = rr.ExchangeRate,
                                        TblCurrency           = rr.TblCurrency,
                                        TransDate             = row.TransDate,
                                        TblJournalAccountType = 0,
                                        EntityAccount         = glAccount,
                                        GlAccount             = glAccount,
                                        TblLedgerHeader       = newLedgerHeaderProdRow.Iserial,
                                        PaymentRef            = query.SupplierInv,
                                        DrOrCr                = !drorCr
                                    };

                                    if (row.TblRecInvHeaderTypeProd == 2)
                                    {
                                        markupVendorDiscount.DrOrCr = !markupVendorDiscount.DrOrCr;
                                    }
                                    glserive.UpdateOrInsertTblLedgerMainDetails(markupVendorDiscount, true, 000, out temp, company,
                                                                                user);

                                    if (glAccount != 0)
                                    {
                                        var markupVendor = new TblLedgerMainDetail
                                        {
                                            Amount                = totalModified,
                                            Description           = markupdes,
                                            ExchangeRate          = rr.ExchangeRate,
                                            TblCurrency           = rr.TblCurrency,
                                            TransDate             = row.TransDate,
                                            TblJournalAccountType = rr.TblJournalAccountType,
                                            EntityAccount         = vendorAccountMarkUp.Iserial,
                                            GlAccount             = vendorAccountMarkUp.AccountIserial,
                                            TblLedgerHeader       = newLedgerHeaderProdRow.Iserial,
                                            PaymentRef            = query.SupplierInv,
                                            DrOrCr                = drorCr
                                        };
                                        if (row.TblRecInvHeaderTypeProd == 2)
                                        {
                                            markupVendor.DrOrCr = !markupVendor.DrOrCr;
                                        }
                                        glserive.UpdateOrInsertTblLedgerMainDetails(markupVendor, true, 000, out temp, company, user);

                                        foreach (var variable in list)
                                        {
                                            var costcenter = new TblGlRuleDetail();
                                            costcenter = glserive.FindCostCenterByType(costcenter, 0, (int)variable.GroupName,
                                                                                       company);

                                            var markupVendorLedgerCostCenter = new TblLedgerDetailCostCenter
                                            {
                                                Ratio = 0,
                                                TblLedgerMainDetail = markupVendor.Iserial,
                                                Amount            = (double)(markupVendor.Amount * variable.CostPercentage),
                                                TblCostCenter     = costcenter.TblCostCenter,
                                                TblCostCenterType = costcenter.TblCostCenter1.TblCostCenterType,
                                            };
                                            glserive.UpdateOrInsertTblLedgerDetailCostCenters(markupVendorLedgerCostCenter, true, 000,
                                                                                              out temp, user, company);
                                        }
                                    }
                                }

                                #endregion MarkUp

                                foreach (var rr in list.GroupBy(x => x.GroupName))
                                {
                                    glserive.PostInvPurchaseAndTax(query, newLedgerHeaderProdRow, rr, company, user, list, desc);
                                }
                                glserive.CorrectLedgerHeaderRouding(newLedgerHeaderProdRow.Iserial, company, user);
                            }

                            entity.SaveChanges();
                            scope.Complete();
                        }
                        return(query);
                    }
                    return(null);
                }
            }
        }
示例#6
0
        private void PostTblGlCashTransactionHeader(int iserial, int user, string company, string code)
        {
            using (var entity = new ccnewEntities(GetSqlConnectionString(company)))
            {
                entity.CommandTimeout = 0;
                var CashTransactionHeader =
                    entity.TblGlCashTransactionHeaders.Include("TblGlCashTypeSetting1.TblJournal1").Include("TblGlCashTransactionDetails.TblGlCashTransactionDetailCostCenters")
                    .FirstOrDefault(x => x.Iserial == iserial);
                var journalint =
                    entity.TblJournals.FirstOrDefault(
                        x => x.Iserial == CashTransactionHeader.TblGlCashTypeSetting1.TblJournal);
                try
                {
                    var newLedgerHeaderRowss = new TblLedgerHeader
                    {
                        CreatedBy          = CashTransactionHeader.CreatedBy,
                        CreationDate       = DateTime.Now,
                        Description        = CashTransactionHeader.Description,
                        DocDate            = CashTransactionHeader.DocDate,
                        TblJournal         = journalint.Iserial,
                        TblTransactionType = 11,
                        TblJournalLink     = CashTransactionHeader.Iserial
                    };
                } catch (Exception ex) {
                    string c = ex.Message;
                }

                var newLedgerHeaderRow = new TblLedgerHeader
                {
                    CreatedBy          = CashTransactionHeader.CreatedBy,
                    CreationDate       = DateTime.Now,
                    Description        = CashTransactionHeader.Description,
                    DocDate            = CashTransactionHeader.DocDate,
                    TblJournal         = journalint.Iserial,
                    TblTransactionType = 11,
                    TblJournalLink     = CashTransactionHeader.Iserial
                };
                var tempheader = 0;
                UpdateOrInsertTblLedgerHeaders(newLedgerHeaderRow, true, 000, out tempheader, (int)CashTransactionHeader.CreatedBy,
                                               company);

                var drorcr = false;
                if (CashTransactionHeader.TblGlCashTypeSetting1.Code == "3")
                {
                    drorcr = true;
                }
                foreach (var row in CashTransactionHeader.TblGlCashTransactionDetails)
                {
                    var accountDetail1 =
                        entity.Entities.FirstOrDefault(
                            x =>
                            x.TblJournalAccountType == row.TblJournalAccountType &&
                            x.Iserial == row.EntityAccount).AccountIserial;

                    var newledgerDetailrowh1 = new TblLedgerMainDetail
                    {
                        Amount                = (decimal?)row.Amount,
                        Description           = row.Description,
                        ExchangeRate          = CashTransactionHeader.ExchangeRate,
                        TblCurrency           = CashTransactionHeader.TblCurrency,
                        TransDate             = CashTransactionHeader.DocDate,
                        TblJournalAccountType = row.TblJournalAccountType,
                        EntityAccount         = row.EntityAccount,
                        GlAccount             = accountDetail1,
                        TblLedgerHeader       = newLedgerHeaderRow.Iserial,
                        DrOrCr                = drorcr,
                        PaymentRef            = CashTransactionHeader.Code
                    };
                    newledgerDetailrowh1.TblLedgerDetailCostCenters = new System.Data.Objects.DataClasses.EntityCollection <TblLedgerDetailCostCenter>();
                    foreach (var item in row.TblGlCashTransactionDetailCostCenters)
                    {
                        var newCostCenter = new TblLedgerDetailCostCenter()
                        {
                            Amount            = item.Amount,
                            Calculated        = false,
                            Ratio             = 0,
                            TblCostCenter     = item.TblCostCenter,
                            TblCostCenterType = item.TblCostCenterType,
                        };

                        newledgerDetailrowh1.TblLedgerDetailCostCenters.Add(newCostCenter);
                    }

                    UpdateOrInsertTblLedgerMainDetails(newledgerDetailrowh1, true, 000, out tempheader, company, (int)CashTransactionHeader.CreatedBy);
                }
                var accountDetail = entity.Entities.FirstOrDefault(
                    x => x.TblJournalAccountType == CashTransactionHeader.TblJournalAccountType &&
                    x.Iserial == CashTransactionHeader.EntityAccount).AccountIserial;

                var newledgerDetailrowhCash = new TblLedgerMainDetail
                {
                    Amount                = (decimal?)CashTransactionHeader.TblGlCashTransactionDetails.Sum(w => w.Amount),
                    Description           = CashTransactionHeader.Description,
                    ExchangeRate          = CashTransactionHeader.ExchangeRate,
                    TblCurrency           = CashTransactionHeader.TblCurrency,
                    TransDate             = CashTransactionHeader.DocDate,
                    TblJournalAccountType = CashTransactionHeader.TblJournalAccountType,
                    EntityAccount         = CashTransactionHeader.EntityAccount,
                    GlAccount             = accountDetail,
                    TblLedgerHeader       = newLedgerHeaderRow.Iserial,
                    DrOrCr                = !drorcr,
                    PaymentRef            = CashTransactionHeader.Code
                };
                UpdateOrInsertTblLedgerMainDetails(newledgerDetailrowhCash, true, 000, out tempheader, company,
                                                   (int)CashTransactionHeader.CreatedBy);


                CashTransactionHeader.ApproveDate = DateTime.Now;
                CashTransactionHeader.ApprovedBy  = user;
                CashTransactionHeader.Approved    = true;
                entity.SaveChanges();
            }
        }