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