Пример #1
0
        public HttpResponseMessage shipmentplan(ShipmentPlanSearchModel searchdata)
        {
            try
            {
                using (var context = new SAPContext())
                {
                    var items = (from h in context.afs_shipment_h
                                 join i in context.afs_shipment_carries on h.SHIPMENT_NUMBER equals i.SHIPMENT_NUMBER
                                 join vttk in context.VTTK on h.SHIPMENT_NUMBER equals vttk.TKNUM
                                 where h.CLIENT == client
                                 select new
                    {
                        transport_date = h.TRANSPORT_DATE,
                        shipment_number = h.SHIPMENT_NUMBER,
                        car_license = vttk.ADD01,
                        containerid = vttk.SIGNI,
                        time_range = i.TIME_RANGE,
                        so_number = i.SALEORDER_NUMBER,
                        point_desc = i.POINT_DESC,
                        remark = i.REMARK,
                        status = h.STATUS
                    }).ToList();

                    //remove filter
                    if (!string.IsNullOrEmpty(searchdata.transport_date))
                    {
                        var tdate = DateTime.ParseExact(searchdata.transport_date, "dd/MM/yyyy", null);
                        items.RemoveAll(w => w.transport_date != tdate);
                    }
                    if (!string.IsNullOrEmpty(searchdata.ShipmentNo))
                    {
                        items.RemoveAll(w => w.shipment_number != searchdata.ShipmentNo);
                    }
                    if (!string.IsNullOrEmpty(searchdata.CarLicense))
                    {
                        items.RemoveAll(w => w.car_license != searchdata.CarLicense);
                    }
                    if (!string.IsNullOrEmpty(searchdata.ContainerID))
                    {
                        items.RemoveAll(w => !w.containerid.Contains(searchdata.ContainerID));
                    }
                    if (!string.IsNullOrEmpty(searchdata.SONumber))
                    {
                        items.RemoveAll(w => w.so_number != searchdata.SONumber);
                    }

                    //assign Sale Order
                    ShipmentPlanModel        result  = new ShipmentPlanModel();
                    List <ShipmentPlanModel> results = new List <ShipmentPlanModel>();
                    var SaleOrderService             = new sapSaleOrder();
                    var BranchService = new sapBranch();
                    foreach (var item in items)
                    {
                        result = new ShipmentPlanModel();
                        result.transport_date  = item.transport_date;
                        result.shipment_number = item.shipment_number;
                        result.car_license     = item.car_license;
                        result.containerid     = item.containerid;
                        result.time_range      = item.time_range;

                        switch (result.time_range)
                        {
                        case "8.00-9.00":
                            result.time_sort = 1;
                            break;

                        case "9.00-10.00":
                            result.time_sort = 2;
                            break;

                        case "10.00-11.00":
                            result.time_sort = 3;
                            break;

                        case "11.00-12.00":
                            result.time_sort = 4;
                            break;

                        case "12.00-13.00":
                            result.time_sort = 5;
                            break;

                        case "13.00-14.00":
                            result.time_sort = 6;
                            break;

                        case "14.00-15.00":
                            result.time_sort = 7;
                            break;

                        case "15.00-16.00":
                            result.time_sort = 8;
                            break;

                        case "16.00-17.00":
                            result.time_sort = 9;
                            break;

                        default:
                            break;
                        }

                        result.so_number  = item.so_number;
                        result.point_desc = item.point_desc;
                        result.remark     = item.remark;
                        result.status     = item.status;
                        if (!string.IsNullOrEmpty(result.so_number))
                        {
                            var vbak = SaleOrderService.GetVBAK(client, result.so_number);
                            if (vbak != null)
                            {
                                result.saleoffice_code = vbak.VKBUR;
                                if (!string.IsNullOrEmpty(result.saleoffice_code))
                                {
                                    var branch = BranchService.GetZBRANCH(client, result.saleoffice_code);
                                    if (branch != null)
                                    {
                                        result.saleoffice_name = branch.HOST_DESC;
                                    }
                                }

                                var vbap = SaleOrderService.GetVBAP(vbak.MANDT, vbak.VBELN);
                                result.so_amount       = vbap.Select(x => x.NETWR + x.MWSBP).Sum();
                                result.article_count   = vbap.GroupBy(g => g.MATNR).Count();
                                result.article_sum_qty = vbap.Select(x => x.KWMENG).Sum();
                            }
                        }
                        results.Add(result);
                    }

                    return(Request.CreateResponse(HttpStatusCode.OK, results));
                }
            }
            catch (Exception ex)
            {
                return(Request.CreateResponse(HttpStatusCode.InternalServerError, ex));
            }
        }
Пример #2
0
        public HttpResponseMessage search_list(RepairSearchModel search)
        {
            var loadUser      = new loadUser();
            var sapSaleOrder  = new sapSaleOrder();
            var sapCustomer   = new sapCustomer();
            var sapBilling    = new sapBilling();
            var BranchService = new sapBranch();

            search.fetchdata = search.fetchdata == null ? new fetchdata() : search.fetchdata;
            var result = new List <RepairHeader>();
            var rh     = new RepairHeader();
            ICollection <RepairItems> ri = new List <RepairItems>();

            try
            {
                Expression <Func <afs_repair_header, bool> > RepairDateFromExpression;
                if (!string.IsNullOrEmpty(search.repair_date_from))
                {
                    var datefrom = DateTime.ParseExact(search.repair_date_from, "dd/MM/yyyy", null);
                    //RepairDateFromExpression = gto => gto.REPAIR_DATE.Value.ToString("dd/MM/yyyy").CompareTo(search.repair_date_from) >= 0;
                    RepairDateFromExpression = gto => gto.REPAIR_DATE >= datefrom;
                }
                else
                {
                    RepairDateFromExpression = gto => 1 == 1;
                }

                Expression <Func <afs_repair_header, bool> > RepairDateToExpression;
                if (!string.IsNullOrEmpty(search.repair_date_to))
                {
                    var dateto = DateTime.ParseExact(search.repair_date_to + " 23:59:59", "dd/MM/yyyy HH:mm:ss", null);
                    //RepairDateToExpression = gto => gto.REPAIR_DATE.Value.ToString("dd/MM/yyyy").CompareTo(search.repair_date_to) <= 0;
                    RepairDateToExpression = gto => gto.REPAIR_DATE <= dateto;
                }
                else
                {
                    RepairDateToExpression = gto => 1 == 1;
                }

                Expression <Func <afs_repair_header, bool> > SoldToNameExpression;
                if (!string.IsNullOrEmpty(search.soldto_name))
                {
                    SoldToNameExpression = gto => gto.SOLDTO_NAME.Contains(search.soldto_name);
                }
                else
                {
                    SoldToNameExpression = gto => 1 == 1;
                }

                Expression <Func <afs_repair_header, bool> > SoNumberExpression;
                if (!string.IsNullOrEmpty(search.sonumber))
                {
                    SoNumberExpression = gto => gto.SO_NUMBER == search.sonumber;
                }
                else
                {
                    SoNumberExpression = gto => 1 == 1;
                }

                Expression <Func <afs_repair_header, bool> > RepairStatusExpression;
                if (search.status != "ALL" && !string.IsNullOrEmpty(search.status))
                {
                    RepairStatusExpression = gto => gto.STATUS == search.status;
                }
                else
                {
                    RepairStatusExpression = gto => 1 == 1;
                }

                Expression <Func <afs_repair_header, bool> > RepairCodeExpression;
                if (!string.IsNullOrEmpty(search.repair_code))
                {
                    RepairCodeExpression = gto => gto.REPAIR_CODE == search.repair_code;
                }
                else
                {
                    RepairCodeExpression = gto => 1 == 1;
                }

                using (var context = new SAPContext())
                {
                    var repair_headers = context.afs_repair_header
                                         .Where(RepairCodeExpression)
                                         .Where(RepairDateFromExpression)
                                         .Where(RepairDateToExpression)
                                         .Where(SoNumberExpression)
                                         .Where(SoldToNameExpression)
                                         .Where(RepairStatusExpression)
                                         .ToList();

                    foreach (var item in repair_headers)
                    {
                        var vbak = sapSaleOrder.GetVBAK(client, item.SO_NUMBER);

                        rh             = new RepairHeader();
                        rh.repair_code = item.REPAIR_CODE;
                        rh.repair_date = item.REPAIR_DATE;
                        rh.so_number   = item.SO_NUMBER;
                        rh.soldto_code = item.SOLDTO_CODE;
                        rh.soldto_name = item.SOLDTO_NAME;
                        rh.saleorg     = vbak.VKORG;
                        rh.distchannel = vbak.VTWEG;
                        rh.division    = vbak.SPART;
                        rh.salegroup   = vbak.VKGRP;
                        rh.saleoffice  = vbak.VKBUR;

                        var branch = BranchService.GetZBRANCH(client, rh.saleoffice);
                        if (branch != null)
                        {
                            rh.saleoffice_name = branch.HOST_DESC;
                        }

                        //Get Partner Customer
                        var vbpa = sapSaleOrder.GetVBPA(vbak.MANDT, vbak.VBELN, "000000");

                        //Get Sale Rep name
                        var partner = vbpa.Where(w => w.PARVW == "ZR").FirstOrDefault();
                        rh.salerep_code = partner.KUNNR;
                        var salerep = sapCustomer.GetKNA1(partner.MANDT, partner.KUNNR);
                        rh.salerep_name = salerep.NAME1 + salerep.NAME2;

                        rh.status           = item.STATUS;
                        rh.transport_amount = item.TRANSPORT_AMOUNT;
                        rh.contact_tel      = item.CONTACT_TEL;
                        rh.remark           = item.REMARK;
                        rh.created_by       = item.CREATED_BY;

                        var ud = loadUser.GetUser(rh.created_by);
                        if (ud != null)
                        {
                            rh.created_name = ud.firstname + ' ' + ud.lastname;
                        }
                        ;

                        rh.created_date = item.CREATED_DATE;
                        rh.update_by    = item.UPDATE_BY;

                        ud = loadUser.GetUser(rh.update_by);
                        if (ud != null)
                        {
                            rh.update_name = ud.firstname + ' ' + ud.lastname;
                        }
                        ;

                        rh.update_date = item.UPDATE_DATE;
                        result.Add(rh);
                    }
                }

                return(result.Count() == 0
                         ? Request.CreateErrorResponse(HttpStatusCode.NotFound, "Repair data not found")
                         : Request.CreateResponse(HttpStatusCode.OK, result));
            }
            catch (Exception ex)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex.InnerException.Message));
            }
        }