示例#1
0
 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);
     }
 }
示例#2
0
        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);
            }
        }