internal static void CreateCreditorStatementFromInvoice(FleetManager.Shared.Models.creditor_invoiceC _inv, BaseContext _db) { try { } catch (SqlException ex) { LoggerX.LogException(ex); } catch (DbException ex) { LoggerX.LogException(ex); } catch (Exception ex) { LoggerX.LogException(ex); } }
internal static void CreateCreditorInvoice(List <FleetManager.Shared.Models.vh_expense_transC> _exp_trans_list) { if (_exp_trans_list == null) { return; } List <int> _creditor_ids = new List <int>(); using (var _db = fnn.GetDbContext()) { try { FleetManager.Shared.Models.creditor_invoiceC _invoice = null; FleetManager.Shared.Models.creditorC _creditor = null; List <FleetManager.Shared.Models.creditor_invoiceC> _invoice_list = new List <creditor_invoiceC>(); string _sql = null; int _type_id = 0; foreach (var _e in _exp_trans_list) { _creditor = null; switch (_e.exp_type_cat) { case em.vehicle_expense_categoryS.car_parts: { _type_id = em.creditor_typeS.mechanic.ToInt32(); if (_e.mechanic_id > 0) { _creditor = (from k in _db.CREDITORS_SET where k.cr_owner_id == _e.mechanic_id & k.cr_account_type_id == _type_id & k.delete_id == 0 select k).FirstOrDefault(); } break; } case em.vehicle_expense_categoryS.vehicle_hire: { _type_id = em.creditor_typeS.vehicle_owner.ToInt32(); if (_e.vh_owner_id > 0) { _creditor = (from k in _db.CREDITORS_SET where k.cr_owner_id == _e.vh_owner_id & k.cr_account_type_id == _type_id & k.delete_id == 0 select k).FirstOrDefault(); } break; } case em.vehicle_expense_categoryS.fuel: case em.vehicle_expense_categoryS.general_service: { _type_id = em.creditor_typeS.fuel_station.ToInt32(); if (_e.fuel_station_id > 0) { _creditor = (from k in _db.CREDITORS_SET where k.cr_owner_id == _e.fuel_station_id & k.cr_account_type_id == _type_id & k.delete_id == 0 select k).FirstOrDefault(); } break; } case em.vehicle_expense_categoryS.tyres: { _type_id = em.creditor_typeS.city_tyres.ToInt32(); _creditor = (from k in _db.CREDITORS_SET where k.cr_owner_id == _e.exp_type_id & k.cr_account_type_id == _type_id & k.delete_id == 0 select k).FirstOrDefault(); break; } default: { _type_id = em.creditor_typeS.mechanic.ToInt32(); if (_e.mechanic_id > 0) { _creditor = (from k in _db.CREDITORS_SET where k.cr_owner_id == _e.fuel_station_id & k.cr_account_type_id == _type_id & k.delete_id == 0 select k).FirstOrDefault(); } break; } } if (_creditor == null) { continue; } _invoice = null; _invoice = new creditor_invoiceC() { amount_paid = 0, created_by_user_id = _e.created_by_user_id, expense_id = _e.expense_id, exp_cat_id = _e.exp_type_cat_id, exp_type_id = _e.exp_type_id, exp_type_name = _e.exp_type_name, fs_timestamp = fnn.GetUnixTimeStamp(), invoice_amount = _e.expense_amount, invoice_balance = _e.expense_amount, vehicle_plate_no = _e.vehicle_plate_no, invoice_fs_date = _e.expense_date, invoice_fs_id = _e.expense_fs_id, vehicle_id = _e.vehicle_id, project_id = _e.project_id, project_name = _e.project_name, server_edate = fnn.GetServerDate(), cr_account_id = _creditor.cr_account_id, cr_account_type_id = _creditor.cr_account_type_id, cr_account_name = _creditor.cr_account_name }; _db.CREDITOR_INVOICES.Add(_invoice); var _retVal = _db.SaveChangesWithDuplicateKeyDetected(); if (_retVal == null || _retVal.Value == true) { throw new Exception("You Have Entered A Duplicate Invoice Transaction"); } _invoice_list.Add(_invoice); } if (_invoice_list.Count == 0) { return; } foreach (var _inv in _invoice_list) { #region update_expense_db _sql = string.Format("update {0} set cr_invoice_id=@v1,fs_timestamp=@v2 where expense_id=@v3 and delete_id=0", FleetManager.DbBase.tableNames.expense_trans_tb.ToDbSchemaTable()); _db.Database.Connection.Execute(_sql, new { v1 = _inv.cr_invoice_id, v2 = fnn.GetUnixTimeStamp(), v3 = _inv.expense_id }, _db.Database.GetDbTransaction() ); _db.SaveChanges(); #endregion CreateCreditorStatementFromInvoice(_inv, _db); } _db.SaveChanges(); } catch (SqlException ex) { LoggerX.LogException(ex); } catch (DbException ex) { LoggerX.LogException(ex); } catch (Exception ex) { LoggerX.LogException(ex); } } foreach (var _id in _creditor_ids) { fnn.RunCreditorPayments(_id); } }