示例#1
0
        public void saveSoMstr(SalesOrder soitem, string username, string guid, int customerId, decimal harga)
        {
            Context.so_mstr  model      = new Context.so_mstr();
            Context.Customer dbCustomer = soitem.SalesOrderOncallId.HasValue ? soitem.SalesOrderOncall.Customer : soitem.SalesOrderPickupId.HasValue ? soitem.SalesOrderPickup.Customer : soitem.SalesOrderPickup.Customer;
            model.so_oid          = guid;
            model.so_dom_id       = 1;
            model.so_en_id        = 1;
            model.so_add_by       = username;
            model.so_add_date     = DateTime.Now;
            model.so_upd_by       = username;
            model.so_upd_date     = DateTime.Now;
            model.so_code         = soitem.SalesOrderOncallId.HasValue ? soitem.SalesOrderOncall.SONumber : soitem.SalesOrderProsesKonsolidasiId.HasValue ? soitem.SalesOrderProsesKonsolidasi.SONumber : soitem.SalesOrderPickupId.HasValue ? soitem.SalesOrderPickup.SONumber : soitem.SalesOrderPickup.SONumber;
            model.so_ptnr_id_sold = customerId;
            model.so_ptnr_id_bill = customerId;
            model.so_date         = soitem.SalesOrderOncallId.HasValue ? soitem.SalesOrderOncall.TanggalMuat.Value : soitem.SalesOrderPickupId.HasValue ? soitem.SalesOrderPickup.TanggalPickup : soitem.SalesOrderPickup.TanggalPickup;
            model.so_credit_term  = 991025;                                                                                                                  //dbCustomer == null ? 0 : dbCustomer.CustomerCreditStatus.FirstOrDefault().ValueOverdue2.Value;//,   Customer Term of Payment
            model.so_taxable      = dbCustomer != null && dbCustomer.CustomerPPN != null && dbCustomer.CustomerPPN.FirstOrDefault().PPN == true ? "Y" : "N"; // Checkbox
            model.so_tax_class    = 0;                                                                                                                       //, from code_mstr where code_field ~~* 'taxclass_mstr'
            model.so_si_id        = 1;
            model.so_type         = "R";
//            model.so_sales_person = soitem.SalesOrderOncallId.HasValue ? soitem.SalesOrderOncall.Driver1Id.Value : soitem.SalesOrderPickupId.HasValue ? soitem.SalesOrderPickup.Driver1Id.Value : soitem.SalesOrderPickup.Driver1Id.Value;//0;//,  from ptnr_mstr where ptnr_is_member ~~* 'Y'
            model.so_pi_id      = 101;          //, from pi_mstr
            model.so_pay_type   = "9942";       //,  from code_mstr where code_field ~~* 'payment_type'
            model.so_pay_method = 99290;        //"0";// ,   from code_mstr where code_field ~~* 'payment_methode'
            model.so_ar_ac_id   = 0;            //, From pla_mstr.pla_ac_id partnumber --> pt_mstr.pt_pl_id =pla_mstr.pl_id)

            /*model.so_ar_sb_id = 0;//,  From pla_mstr.pla_sb_id partnumber --> pt_mstr.pt_pl_id =pla_mstr.pl_id)
             * model.so_ar_cc_id = 0;//   From pla_mstr.pla_cc_id partnumber --> pt_mstr.pt_pl_id =pla_mstr.pl_id)
             */model.so_dp                = 0;//,    nominal yg didapat dr form InputDP
            model.so_disc_header       = 0;
            model.so_total             = harga; //, Total SO
            model.so_tran_id           = 0;
            model.so_trans_id          = "D";
            model.so_dt                = DateTime.Now;
            model.so_cu_id             = 1;      //, from cu_mstr.cu_id currency)
            model.so_total_ppn         = 0;      //, Total PPN From Detail SO
            model.so_total_pph         = 0;      //, Total PPH From Detail SO
            model.so_payment           = 0;
            model.so_exc_rate          = 1;      //,  kurs mata uang From exr_rate current Date and Current Currency
            model.so_tax_inc           = "N";    //,   Y or N termasuk pajak atau belum, checkbox)
            model.so_cons              = "N";    //,  Y or N konsinyasi atau bukan, checkbox)
            model.so_terbilang         = "N";    //, Terbilang dalam bahasa indonesia
            model.so_bk_id             = 0;      //, from bk_mstr.bk_id Nama Bank)
            model.so_interval          = 1;      //,  from code_mstr where code_field ~~* 'payment_type'  kolom code_user_1
            model.so_ppn_type          = "A";    //,  E=PPN BEBAS, A = PPN BAYAR, N = NON
            model.so_branch_id         = 10001;  //, SO Branch from branch_mstr.branch_id)
            model.so_group_id          = 991414; //,  from code_mstr where code_field ~~* 'so_group'
            model.so_exc_rate_pi       = 0;
            model.so_prct_limit_return = 0;
            model.so_disc_type         = 0;
            model.so_departure_date    = soitem.SalesOrderOncallId.HasValue ? soitem.SalesOrderOncall.TanggalMuat : soitem.SalesOrderProsesKonsolidasiId.HasValue ? soitem.SalesOrderProsesKonsolidasi.TanggalMuat : soitem.SalesOrderPickupId.HasValue ? soitem.SalesOrderPickup.TanggalPickup : soitem.SalesOrderPickup.TanggalPickup;
            model.so_start_route       = "0"; //,   Kota Awal Berangkat from code_mstr where code_field ~~* 'route_mstr'
            model.so_destination_route = "0"; //  kota Tujuan from code_mstr where code_field ~~* 'route_mstr'*/
            context.so_mstr.Add(model);
            context.SaveChanges();
        }
示例#2
0
        public void saveSoMstr(SalesOrder soitem, string username)
        {
            Context.so_mstr  model      = new Context.so_mstr();
            Context.Customer dbCustomer = soitem.SalesOrderOncallId.HasValue ? soitem.SalesOrderOncall.Customer : soitem.SalesOrderPickupId.HasValue ? soitem.SalesOrderPickup.Customer : soitem.SalesOrderPickup.Customer;
            model.so_oid          = Guid.NewGuid().ToString();
            model.so_dom_id       = 1;
            model.so_en_id        = 1;
            model.so_add_by       = username;
            model.so_add_date     = DateTime.Now;
            model.so_upd_by       = username;
            model.so_upd_date     = DateTime.Now;
            model.so_code         = soitem.SalesOrderOncallId.HasValue ? soitem.SalesOrderOncall.SONumber : soitem.SalesOrderProsesKonsolidasiId.HasValue ? soitem.SalesOrderProsesKonsolidasi.SONumber : soitem.SalesOrderPickupId.HasValue ? soitem.SalesOrderPickup.SONumber : soitem.SalesOrderPickup.SONumber;
            model.so_ptnr_id_sold = dbCustomer == null ? 0 : dbCustomer.Id;
            model.so_ptnr_id_bill = dbCustomer == null ? 0 : dbCustomer.Id;
            model.so_date         = soitem.SalesOrderOncallId.HasValue ? soitem.SalesOrderOncall.TanggalOrder : soitem.SalesOrderPickupId.HasValue ? soitem.SalesOrderPickup.TanggalOrder : soitem.SalesOrderPickup.TanggalOrder;
            //public string so_credit_term { get; set; }//,   Customer Term of Payment
            model.so_taxable      = dbCustomer != null && dbCustomer.CustomerPPN != null && dbCustomer.CustomerPPN.FirstOrDefault().PPN == true ? "Y" : "N"; // Checkbox
            model.so_tax_class    = 0;                                                                                                                       //, from code_mstr where code_field ~~* 'taxclass_mstr'
            model.so_si_id        = 1;
            model.so_type         = "R";
            model.so_sales_person = 0; //,  from ptnr_mstr where ptnr_is_member ~~* 'Y'
            model.so_pi_id        = 0; //, from pi_mstr

            /*model.so_pay_type = 0;//,  from code_mstr where code_field ~~* 'payment_type'
             * model.so_pay_method = 0;// ,   from code_mstr where code_field ~~* 'payment_methode'
             * model.so_ar_ac_id = 0; //, From pla_mstr.pla_ac_id partnumber --> pt_mstr.pt_pl_id =pla_mstr.pl_id)
             * model.so_ar_sb_id = 0;//,  From pla_mstr.pla_sb_id partnumber --> pt_mstr.pt_pl_id =pla_mstr.pl_id)
             * model.so_ar_cc_id = 0;//   From pla_mstr.pla_cc_id partnumber --> pt_mstr.pt_pl_id =pla_mstr.pl_id)
             * model.so_dp = 0;*/      //,    nominal yg didapat dr form InputDP
            model.so_disc_header = 0;
            model.so_total       = 0;  //, Total SO
            model.so_tran_id     = 0;
            model.so_trans_id    = "D";
            model.so_trans_rmks  = "0";//,    SO Approval Remarks Null)

/*            model.so_current_route = 0;//, Current City Route
 *          model.so_next_route = 0;//,    Next City Route
 *          model.so_dt = DateTime.now;
 *          model.so_cu_id = 0;//, from cu_mstr.cu_id currency)
 *          model.so_total_ppn = 0;//, Total PPN From Detail SO
 *          model.so_total_pph = 0;//, Total PPH From Detail SO
 *          model.so_payment = 0;
 *          model.so_exc_rate = 0;//,  kurs mata uang From exr_rate current Date and Current Currency
 *          model.so_tax_inc = 0;//,   Y or N termasuk pajak atau belum, checkbox)
 *          model.so_cons = 0;//,  Y or N konsinyasi atau bukan, checkbox)
 *          model.so_terbilang = 0;//, Terbilang dalam bahasa indonesia
 *          model.so_bk_id = 0;//, from bk_mstr.bk_id Nama Bank)
 *          model.so_interval = 0;//,  from code_mstr where code_field ~~* 'payment_type'  kolom code_user_1
 *          model.so_ppn_type = 0;//,  E=PPN BEBAS, A = PPN BAYAR, N = NON
 *          model.so_branch_id = 0;//, SO Branch from branch_mstr.branch_id)
 *          model.so_group_id = 0;//,  from code_mstr where code_field ~~* 'so_group'
 *          model.so_exc_rate_pi = 0;
 *          model.so_prct_limit_return = 0;
 *          model.so_disc_type = 0;
 *          model.so_vehicle = model.DataTruck.VehicleNo;
 *          model.so_departure_date = soitem.SalesOrderOncallId.HasValue ? soitem.SalesOrderOncall.TanggalMuat : soitem.SalesOrderProsesKonsolidasiId.HasValue ? soitem.SalesOrderProsesKonsolidasi.TanggalMuat : soitem.SalesOrderPickupId.HasValue ? soitem.SalesOrderPickup.TanggalMuat : soitem.SalesOrderPickup.TanggalMuat;
 *          model.so_start_route = 0;//,   Kota Awal Berangkat from code_mstr where code_field ~~* 'route_mstr'
 *          model.so_destination_route = 0;//  kota Tujuan from code_mstr where code_field ~~* 'route_mstr'*/
            context.so_mstr.Add(model);
            context.SaveChanges();
        }
示例#3
0
        public ActionResult EditOncall(SalesOrderOncall model, string btnsave)
        {
            //validasi manual
            bool palid  = true;
            int  urutan = 1;

            if (btnsave != "draft" && model.Status != "draft")
            {
                if (!model.IdDataTruck.HasValue)
                {
                    ModelState.AddModelError("IdDataTruck", "Truk harus diisi.");
                    palid = false;
                }
                if (!model.Driver1Id.HasValue || model.Driver1Id.Value == 0)
                {
                    ModelState.AddModelError("Driver1Id", "Driver harus diisi.");
                    palid = false;
                }
                if (model.Driver1Id != null)
                {
                    Context.Driver                 item = RepoDriver.FindAll().Where(d => d.Id == model.Driver1Id.Value).FirstOrDefault();
                    List <Context.SalesOrder>      dbso = RepoSalesOrder.FindAll().ToList();
                    List <Context.SettlementBatal> dbsb = RepoSettlementBatal.FindAll().Where(s => s.IsProses == false).ToList();
                    Driver             driver           = new Driver(item, dbso, dbsb);
                    Context.SalesOrder dbsoDriver       = RepoSalesOrder.FindAll().Where(d =>
                                                                                         (d.Status == "save" || d.Status == "draft planning" || d.Status == "draft konfirmasi" || d.Status == "save konfirmasi" || d.Status == "dispatched") && (
                                                                                             (d.SalesOrderOncallId.HasValue && (d.SalesOrderOncall.Driver1Id == model.Driver1Id || d.SalesOrderOncall.Driver2Id == model.Driver1Id)) ||
                                                                                             (d.SalesOrderPickupId.HasValue && (d.SalesOrderPickup.Driver1Id == model.Driver1Id || d.SalesOrderPickup.Driver2Id == model.Driver1Id)) ||
                                                                                             (d.SalesOrderProsesKonsolidasiId.HasValue && (d.SalesOrderProsesKonsolidasi.Driver1Id == model.Driver1Id || d.SalesOrderProsesKonsolidasi.Driver2Id == model.Driver1Id))
                                                                                             )
                                                                                         ).FirstOrDefault();
                    if (driver.StatusSo != "Available" && dbsoDriver != null && RepoSalesOrder.FindArea(dbsoDriver.SalesOrderOncall.IdDaftarHargaItem.Value) != "YES")
                    {
                        List <Context.SalesOrder> dbsoDriverList = RepoSalesOrder.FindAll().Where(d =>
                                                                                                  (d.Status == "save" || d.Status == "draft planning" || d.Status == "draft konfirmasi" || d.Status == "save konfirmasi" || d.Status == "dispatched") && (
                                                                                                      (d.SalesOrderOncallId.HasValue && (d.SalesOrderOncall.Driver1Id == model.Driver1Id || d.SalesOrderOncall.Driver2Id == model.Driver1Id)) ||
                                                                                                      (d.SalesOrderPickupId.HasValue && (d.SalesOrderPickup.Driver1Id == model.Driver1Id || d.SalesOrderPickup.Driver2Id == model.Driver1Id)) ||
                                                                                                      (d.SalesOrderProsesKonsolidasiId.HasValue && (d.SalesOrderProsesKonsolidasi.Driver1Id == model.Driver1Id || d.SalesOrderProsesKonsolidasi.Driver2Id == model.Driver1Id))
                                                                                                      )
                                                                                                  ).ToList();
                        urutan = dbsoDriver.urutan + 1;

                        //SO yg sdh jalan
                        Context.Rute rute       = RepoSalesOrder.FindRute(dbsoDriver.SalesOrderOncall.IdDaftarHargaItem.Value);
                        int          waktuKerja = int.Parse(rute.WaktuKerja.ToString());

                        //SO yg sedang diplanning
                        Context.SalesOrder so           = RepoSalesOrder.FindByOnCall(model.SalesOrderId.Value);
                        Context.Rute       rutePlanning = null;
                        if (so != null && so.SalesOrderOncall != null && so.SalesOrderOncall.IdDaftarHargaItem != null)
                        {
                            rutePlanning = RepoSalesOrder.FindRute(so.SalesOrderOncall.IdDaftarHargaItem.Value);
                            int  waktuKerjaPlanning = int.Parse(rutePlanning.WaktuKerja.ToString());
                            bool used_at_that_date  = dbsoDriverList.Any(d =>
                                                                         DateTime.Parse(d.SalesOrderOncall.TanggalMuat.ToString()).AddDays(waktuKerja) >= model.TanggalMuat ||
                                                                         DateTime.Parse(d.SalesOrderOncall.TanggalMuat.ToString()) <= DateTime.Parse(model.TanggalMuat.ToString()).AddDays(waktuKerja)
                                                                         );
                            if (used_at_that_date)
                            {
                                ModelState.AddModelError("Driver1Id", "Driver tidak tersedia, harap pilih driver lain.");
                                palid = false;
                            }
                            else if (urutan > 2 && rutePlanning.IsAreaPulang != true)
                            {
                                ModelState.AddModelError("Driver1Id", "Driver tidak tersedia, harap pilih driver lain.");
                                palid = false;
                            }
                        }
                    }
                }
            }
            if (model.Status == "draft")
            {
                if (model.CommentUser == "" || model.CommentUser == null)
                {
                    ModelState.AddModelError("CommentUser", "Comment harus diisi.");
                    palid = false;
                }
            }
            if (palid)
            {
                Context.SalesOrder dbitem = RepoSalesOrder.FindByPK(model.SalesOrderId.Value);
                dbitem.isReturn  = false;
                dbitem.UpdatedBy = UserPrincipal.id;
                dbitem.urutan    = urutan;
                string act = "";
                if (btnsave != null && btnsave != "")
                {
                    act           = "Draft";
                    dbitem.Status = btnsave;
                }
                else
                {
                    if (model.Status.ToLower() == "save")
                    {
                        act             = "Return";
                        dbitem.isReturn = true;
                    }
                    else
                    {
                        act             = "Submit";
                        dbitem.isReturn = false;
                    }

                    dbitem.Status = model.Status;
                }

                model.setDbOperasional(dbitem.SalesOrderOncall, act, "Operational");
                RepoSalesOrder.save(dbitem);
                RepoAuditrail.savePlanningHistory(dbitem);
                Context.so_mstr   dbptnr = Reposo_mstr.FindByPK(dbitem.SalesOrderOncall.SONumber);
                Context.DataTruck truck  = RepoDataTruck.FindByPK(model.IdDataTruck);
                try
                {
                    dbptnr.so_vehicle = Repocode_mstr.FindByCodeName(truck.VehicleNo).id;
                    Reposo_mstr.UpdateSoMstrVehicle(dbptnr);
                }
                catch (Exception)
                {
                }
                return(RedirectToAction("Index"));
            }
            else
            {
                ViewBag.kondisi  = "planning";
                ViewBag.name     = model.SONumber;
                ViewBag.Title    = "Planning Sales Order Oncall " + model.SONumber;
                ViewBag.PostData = "EditOncall";
                return(View("SalesOrderOncall/FormReadOnly", model));
            }
        }