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); } }
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"); } } }
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); }
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(); } }
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); } } }
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(); } }