MVC北京络捷斯特第三方物流系统技术解析(六)补录订单运输信息
客服人员提交订单后,可以随时补录订单信息。客服人员补录运单时,点击补录信息,此时系统显示的是未完成的运单列表,先在运单列表中选中一票运单,点击“修改 ”按钮,在此界面把运单信息补充完整,内容与订单录入部分相同。修改完成后,点击“ 提交”按钮保存信息。把运单提交给财务复核时,选中已经补录完整的运单,点击“提交复核”按钮,则运单提交至财务复核;如果运单上的费用发生变更,经过相关的审批流程后,点击“费用调整 ”按钮进行费用调整。如果是长途派送的业务,事先没有生成订单,则客服在“订单录入”模块录入运单信息。
界面效果图:
2.7.1.1(图1)
2.7.1.1(图2)
查询功能实现:
第一步:数据库
1、表和表关系
上面的datagrid
2.7.1.1(图3)
表1:运输订单表(PWOrderForTransportationList)
用于存放运输订单的信息
列名 | 数据类型 | 主键/外键 | 说明 |
OrderForTransportationID | int | 主键 | 订单运输信息ID |
OrderForGoodsNumber | nchar (50) |
| 订单号 |
VocationalTypeID | int | 外键 | 业务类型ID |
HeadstreamID | int | 外键 | 始发地ID |
DestinationID | int | 外键 | 目的地ID |
TakeDeliveryTime | datetime |
| 取货时间 |
ArriveTime | datetime |
| 到货时间 |
TakeDeliveryID | int | 外键 | 取货ID |
DeliverGoodsID | int | 外键 | 签单ID |
WrittenPermissionID | int | 外键 | 返回ID |
ClientContractsConsignID | int | 外键 | 合同托运客户ID |
ShipperName | nchar (50) |
| 托运人姓名 |
ShipperPhoneNumber | nchar (50) |
| 托运人电话 |
ShipperUnitsID | int | 外键 | 托运人单位ID |
ShipperLocation | nchar (50) |
| 托运人地址 |
ShipperAccount | nchar (50) |
| 托运帐号 |
ShipperPostcode | nchar (50) |
| 托运人邮编 |
ClientManager | nchar (50) |
| 客户经理 |
StorePickupPersonID | int | 外键 | 取货人ID |
StorePickupPersonName | nchar (50) |
| 取货联系人 |
StorePickupPersonPhoneNumber | nchar (50) |
| 取货联系人电话 |
StorePickupPersonAddress | nchar (50) |
| 取货地址 |
ProjectID | int | 外键 | 项目ID |
ConsigneeName | nchar (10) |
| 收货人姓名 |
ConsigneePhoneNumber | nchar (50) |
| 收货人电话 |
ConsigneeUnit | nchar (50) |
| 收货人单位 |
ConsigneeAddress | nchar (50) |
| 收货人地址 |
ConsigneeAccount | nchar (50) |
| 收货人帐号 |
ConsigneePostcode | nchar (50) |
| 收货人邮编 |
ConsigneeID | int | 外键 | 收货人ID |
CarriageFare | decimal (18, 2) |
| 运费 |
IncidentalExpenses | decimal (18, 2) |
| 杂费 |
CostSumUp | decimal (18, 2) |
| 费用小计 |
WhetherOrNotInsureDeclare | bit |
| 保声明否 |
SettleAccountsWayID | int | 外键 | 保险费 |
AdvanceReceipts | decimal (18, 2) |
| 结算方式ID |
InsureExpenses | decimal (18, 2) |
| 预收款 |
PayNumber | nchar (50) |
| 付费帐号 |
Remarks | nchar (100) |
| 备注 |
FabricationOrderFormID | int | 外键 | 制单人ID |
AcceptanceTime | datetime |
| 受理时间 |
AcceptanceUnitID | int | 外键 | 受理单位ID |
Receiver | nchar (10) |
| 签收人 |
SignForTime | datetime |
| 签收时间 |
WhetherOrNotSignFor | bit |
| 签收否 |
RepeatOrderStateID | int | 外键 | 返单状态ID |
RepeatOrderPeopleID | int | 外键 | 返单人ID |
RepeatOrderTime | datetime |
| 返单时间 |
RepeatOrderReceive | bit |
| 返单时间 |
BeforeOneTime | nchar (100) |
| 当前地点 |
CheckEmploy | bit |
| 复核否 |
ClientID | int | 外键 | 客户ID |
ClientAgreementInformationID | int | 外键 | 客户合同ID |
TongZhiCiShu | int | 外键 |
|
QuHuoFou | bit |
|
|
ShengChenJiHuaDan | nchar (30) |
| 生成计划单号 |
ShengChenFou | bit |
| 生成否 |
DingDanZhuangTai | bit |
| 订单状态 |
ZongTiJi | decimal (18, 3) |
| 总体积 |
ZongShuLiang | decimal (18, 3) |
| 总数量 |
ZongZhongLiang | decimal (18, 3) |
| 总重量 |
RouteID | int | 外键 | 路由ID |
ZhanCunFou | bit |
| 暂存否 |
HuoWeiID | int | 外键 | 货位ID |
HuoWeiHao | nchar (50) |
| 货位号 |
YiQuHuo | bit |
| 已取否 |
YiPaiHuo | bit |
| 已派否 |
QuPaiLeiXingFou | bit |
| 取派类型否 |
LunLiID | int | 外键 | 运力ID |
ShuaiHuoFou | bit |
| 甩货否 |
YouYongFou | bit |
| 有否否 |
ShengChengZhanDanFou | bit |
| 生成账单否 |
表2:属性明细表(SYSAttributeDetailList)
用于存放集合信息
列名 | 数据类型 | 主键/外键 | 说明 |
AttributeDetailID | int | 主键 | 属性明细ID |
AttributeGatherID | int | 外键 | 属性集合ID |
AttributeDetailName | nchar (10) |
| 属性明细名称 |
YouYongFou | bit |
| 有效否 |
表3:站点信息表(SYSSiteInformationList)
用于存放站点信息
列名 | 数据类型 | 主键/外键 | 说明 |
SiteInformationID | int | 主键 | 站点信息ID |
SiteTypeID | int | 外键 | 站点类型ID |
SiteNumber | nchar (50) |
| 站点编号 |
SiteDesignation | nchar (50) |
| 站点名称 |
SiteAddress | nchar (50) |
| 站点详细地址 |
SiteTelephone | nchar (50) |
| 站点电话 |
SitePortraiture | nchar (50) |
| 站点传真 |
ZipCode | nchar (50) |
| 邮编 |
FenJianQu | nchar (50) |
| 分拣区 |
ChuCunQu | nchar (50) |
| 储存区 |
Contacts | nchar (10) |
| Contacts |
Remarks | nchar (100) |
| 备注 |
PlaceArea | decimal (18) |
| 场地面积 |
CarparkArea | decimal (18) |
| 停车场面积 |
Quantity | decimal (18) |
| 车位数量 |
YouYongFou | bit |
| 有效否 |
表4:所属单位表(SYSSubsidiaryUnitList)
用于存放单位信息
列名 | 数据类型 | 主键/外键 | 说明 |
SubsidiaryUnitID | int | 主键 | 所属单位ID |
InstitutionID | int | 外键 | 机构ID |
SubsidiaryUnitDesignation | nchar (50) |
| 所属单位名称 |
YouYongFou | bit |
| 有效否 |
表5:项目表(SYSProjectList)
用于存放项目信息
列名 | 数据类型 | 主键/外键 | 说明 |
ProjectID | int | 主键 | 项目ID |
WhetherProjectSpecialtype | bit |
| 项目特殊类型否 |
ProjectNumber | nchar (100) |
| 项目代码 |
ProjectDesignation | nchar (100) |
| 项目名称 |
ProjectDescribe | nchar (100) |
| 项目描述 |
YouYongFou | bit |
| 有效否 |
表6:员工表(SYSPersonnelList)
用于存放员工信息
列名 | 数据类型 | 主键/外键 | 说明 |
PersonnelID | int | 主键 | 员工ID |
DepartmentID | int | 外键 | 部门ID |
UseOrganization | int | 外键 | 使用机构ID |
OrganizationID | int | 外键 | 所属机构ID |
GenreID | int | 外键 | 所属类型ID |
SubsidiaryUnitID | int | 外键 | 所属单位ID |
SexID | int | 外键 | 性别ID |
CredentialsGenreID | int | 外键 | 证件类型ID |
StateID | int | 外键 | 状态ID |
Birthday | date |
| 人员编码 |
WorkDate | date |
| 区别码 |
PersonnelCode | nchar (50) |
| 姓名 |
DifferenceCode | nchar (50) |
| 出生日期 |
Name | nchar (10) |
| 工作日期 |
Duties | nchar (50) |
| 职务 |
CredentialsNumber | nchar (50) |
| 证件号码 |
Address | nchar (50) |
| 住址 |
PhoneNumber | nchar (50) |
| 电话 |
MobilePhone | nchar (50) |
| 手机 |
| nchar (50) |
| |
Remarks | nchar (50) |
| 备注 |
YouYongFou | bit |
| 有效否 |
表6:客户表(SYSClientList)
用于存放客户信息
列名 | 数据类型 | 主键/外键 | 说明 |
ClientID | int | 主键 | 客户ID |
ClientNumber | nchar (50) |
| 客户帐号 |
ClientEncoded | nchar (50) |
| 客户码 |
ClientUnitDesignation | nchar (50) |
| 客户单位名称 |
ClientAbbreviation1 | nchar (50) |
| 客户简称1 |
ClientAbbreviation2 | nchar (50) |
| 客户简称2 |
ClientManager | nchar (50) |
| 客户经理 |
ClientManagerBelephoneLdentification | nchar (50) |
| 客户经理电话 |
Contacts | nchar (50) |
| 联系人 |
ContactsTelephone | nchar (50) |
| 联系人电话 |
ContactsEmail | nchar (50) |
| 联系人Email |
ContactsVIP | nchar (50) |
| 联系人VIP |
ContactsJAI | nchar (50) |
| 联系人JAI |
ContactsRankID | int | 外键 | 客户级别ID |
ContactsZipCode | nchar (50) |
| 客户邮编 |
ProjectID | int | 外键 | 项目ID |
ContactsFacsimile | nchar (50) |
| 客户传真 |
EnglishAbbreviation | nchar (50) |
| 英文缩写 |
EnglishDesignation | nchar (50) |
| 英文名称 |
ContactsAddress | nchar (50) |
| 客户地址 |
ClientCompanyID | int | 外键 | 客户公司ID |
IndustryAttributeID | int | 外键 | 行业属性ID |
EnterpriseScaleID | int | 外键 | 企业规模ID |
MemberDeputy | nchar (50) |
| 会员代表 |
AgreementGrandfatherAddress | nchar (50) |
| 合同存档地 |
BankOfDeposit | nchar (30) |
| 开户行 |
ClientAgreementID | int | 外键 | 客户合同ID |
BankofdepositAccountNumber | nchar (50) |
| 开户行帐号 |
DutyParagraph | nchar (50) |
| 税号 |
YouYongFou | bit |
| 有效否 |
TongBuFou | bit |
| 同步否 |
表7:客户合同表(SYSClientList)
用于存放客户合同信息
列名 | 数据类型 | 主键/外键 | 说明 |
ClientAgreementInformationID | int | 主键 | 客户合同信息ID |
AgreementNumber | nchar (30) |
| 合同编号 |
AgreementDesignation | nchar (30) |
| 合同名称 |
Agreement数据类型ID | int |
| 合同类型ID |
ClientID | int |
| 客户ID |
ProjectID | int |
| 项目ID |
VocationalPersonDeputy | nchar (30) |
| 业务代表人 |
VocationalPersonDeputyFashion | nchar (30) |
| 业务代表联系方式 |
EndDate | datetime |
| 截止日期 |
CarriageFareValue | decimal (18, 2) |
| 运费单价 |
InsuranceCompanyID | int |
| 保险公司ID |
SettleAccountsWayID | int |
| 结算方式ID |
AgreementGrandfatherAddress | nchar (30) |
| 合同存档地 |
Oursignatory | nchar (30) |
| 我方签署人 |
TheguestsSigntory | nchar (30) |
| 客方签署人 |
Remarks | nchar (100) |
| 备注 |
WhetherCheck | bit |
| 复核否 |
YouYongFou | bit |
| 有用否 |
InsuranceRate | decimal (18, 3) |
| 保险费率 |
表8:保险公司表(SYSInsuranceCompanyList)
用于存放保险公司信息
列名 | 数据类型 | 主键/外键 | 说明 |
InsuranceCompanyID | int | 主键 | 保险公司ID |
InsuranceCompanyDesignation | nchar (50) |
| 保险公司名称 |
InsuranceDesignationNumber | nchar (50) |
| 保险公司编号 |
InsuranceRate | nchar (50) |
| 保险费率 |
AmountInsured | nchar (50) |
| 投保金额 |
YouYongFou | bit |
| 有用否 |
下面的datagrid
2.5.1.3图(3)
表9:订单运输明细表(PWOrderForGoodsDetailList)
用于存放订单运输明细信息
列名 | 数据类型 | 主键/外键 | 说明 |
OrderForGoodsDetailID | int | 主键 | 订单运输明细ID |
OrderForGoodsTransportinformationID | int | 外键 | 订单运输信息ID |
GoodsID | int | 外键 | 货品ID |
Cubage | nchar (50) |
| 体积 |
Quantity | nchar (50) |
| 数量 |
Remarks | nchar (50) |
| 备注 |
UnitsID | int | 外键 | 单位ID |
QualityID | int | 外键 | 质量ID |
ZhongLiang | nchar (50) |
| 数量 |
TiChi | nchar (50) |
| 体积 |
YouYongFou | bit |
| 有用否 |
表10:货品表(SYSGoodsList)
用于存放货品信息
列名 | 数据类型 | 主键/外键 | 说明 |
GoodsID | int | 主键 | 货品ID |
GoodsNumber | nchar (30) |
| 货品编码 |
GoodsDesignation | nchar (30) |
| 货品名称 |
Specifications | nchar (30) |
| 规格 |
Deadweight | decimal (18, 2) |
| 重量 |
UnitID | int | 外键 | 单位ID |
ClientID | int | 外键 | 客户ID |
ClientGoodsNumber | nchar (30) |
| 客户货品编码 |
Barcode | nchar (30) |
| 条形码 |
Pinyincode | nchar (30) |
| 拼音码 |
GoodsClassificationID | int | 外键 | 货品类别ID |
Modelnumber | nchar (30) |
| 型号 |
Producer | nchar (30) |
| 生产厂家 |
GoodstypeID | int | 外键 | 货品类型ID |
GoodsSubtypeID | int | 外键 | 货品子类型ID |
Length | decimal (18, 2) |
| 长度 |
Width | decimal (18, 2) |
| 宽度 |
Altitude | decimal (18, 2) |
| 高度 |
SizeUnitID | int | 外键 | 尺寸单位ID |
SKUPackUnitID | int | 主键 | SKU包装单位ID |
Qualityguaranteeperiod | nchar (30) |
| 保质期 |
Codeofhigh | nchar (10) |
| 码高 |
Loadbearing | decimal (18, 2) |
| 承重 |
QualityID | int | 外键 | 质量ID |
DeadweightUnitID | int | 外键 | 重量单位ID |
Unitprice | decimal (18, 2) |
| 单价 |
MemoryEnvironmentID | int | 外键 | 存储环境ID |
GoodsAttributeID | int | 外键 | 货品属性ID |
PolluteAttributeID | int | 外键 | 污染属性ID |
DepolluteAttributeID | int | 外键 | 防止污染属性ID |
StateID | int | 外键 | 状态ID |
Remarks | nchar (100) |
| 备注 |
Monitoringornot | bit |
| 监控否 |
Moisturnot | bit |
| 防潮否 |
Throughweightno | bit |
| 贯重否 |
Easytostealnpnot | bit |
| 易盗否 |
Invertedornot | bit |
| 倒置否 |
Singlproductmanagement | bit |
| 单品管理否 |
Effectofstorageorbatch | bit |
| 批次影响存放否 |
Giftsnot | bit |
| 赠品否 |
Frozenornot | bit |
| 冻结否 |
ScanningID | int | 外键 | 扫描品ID |
Scanningnot | bit |
| 扫描否 |
Fragileor | bit |
| 易碎否 |
YouYongFou | bit |
| 有用否 |
第二步:控制器
2.7.1.1(图4)
1.复核运单信息:
#region 复核运输信息
public int CheckEmployOrderForTransportationList(int OrderForTransportationID)
{
//实例化models中的一个表 给一个别名(DiaryList)
//DiaryList.OrderForGoodsNumber (是实例化表中的一个字段)
//OrderForGoodsNumber 是用于从界面传过来的参数
//修改从界面传过来的OrderForTransportationID,是进行那一行进行复核
Models.PWOrderForTransportationList Transportation = (from tb in YS.PWOrderForTransportationList
where tb.OrderForTransportationID == OrderForTransportationID select
tb).Single<Models.PWOrderForTransportationList>();
Transportation.CheckEmploy = false;//复核
//保存表的改变
int i = YS.SaveChanges();
if (i > 0)
{
return i;
}
else
{
return 0;
}
}
2.保存费用的调整
#region 修改费用调整
public int UpdateFeiYongTiaoZheng(int OrderForTransportationList,
decimal CarriageFare,
decimal IncidentalExpenses, decimal CostSumUp)
{
//实例化models中的一个表 给一个别名(DiaryList)
//DiaryList.OrderForGoodsNumber (是实例化表中的一个字段)
//OrderForGoodsNumber 是用于从界面传过来的参数
//修改从界面传过来的OrderForTransportationID,是进行那一行进行修改所产生的费用
Models.PWOrderForTransportationList Transportation = (from tb in YS.PWOrderForTransportationList
where tb.OrderForTransportationID == OrderForTransportationList
select tb).Single<Models.PWOrderForTransportationList>();
Transportation.CarriageFare = CarriageFare;//运费
Transportation.IncidentalExpenses = IncidentalExpenses;//其他费用
Transportation.CostSumUp = CostSumUp;//费用小计
//保存改变
int i = YS.SaveChanges();
if (i > 0)
{
return i;
}
else
{
return 0;
}
}
第三步:视图
2.7.1.1(图5)
视图和订单运输信息的界面相同;
下面来看看JavaScript的代码:
1.点击datagrid中的复核按钮
function FuHeFous() {
var ROW = $("#tbOrderForTransportationList").datagrid('getSelected');
var OrderForTransportationID = ROW.OrderForTransportationID;
//如果已经复核了,就不用再复核
if (ROW.CheckEmploy2 == "复核中") {
alert("单号" + $.trim(ROW.OrderForGoodsNumber) + "已提交复核,请等待!");
} else if (ROW.CheckEmploy2 == "已复核") {
alert("单号" + $.trim(ROW.OrderForGoodsNumber) + "已复核,不用再提交复核!");
}
else {
//如果满足条件就修改复核的状态
$.getJSON("/YunShuGuanLi/CheckEmployOrderForTransportationList?OrderForTransportationID="
+ OrderForTransportationID,
function (data) {
if (data > 0) {
alert("提交复核成功");
//reload(刷新datagrid的数据)
$("#tbOrderForTransportationList").datagrid('reload');
$("#tbOrderForTransportationList").datagrid('loadData', data);
$("#tbOrderForTransportationList").datagrid('reload');
} else {
alert("提交复核失败");
}
}
);
}
}
2. 点击datagrid中的费用调整按钮
(1).绑定要调整费用的运单
var AllFeiYong = 0;
var FeiOrderForTransportationID = 0;
function FeiYongTiaoZheng() {
var ROW = $("#tbOrderForTransportationList").datagrid('getSelected');
//getSelected(你要选择修改的那一行);
FeiOrderForTransportationID = ROW.OrderForTransportationID;
//如果已经复核,就不能再调整费用
if (ROW.CheckEmploy2 == "复核中") {
alert("单号" + $.trim(ROW.OrderForGoodsNumber) + "在复核中,请等待复核后进行调整!");
}
else
if (ROW.CheckEmploy2 == "已复核") {
alert("单号" + $.trim(ROW.OrderForGoodsNumber) + "已提交复核,不能修改费用!");
} else {
$("#IFeiYongTiaoZheng").reveal($(this).data());
//获取原来费用的信息
$("#txtCostSumUp1").attr('value', ROW.CostSumUp);
$("#txtClientReceivingpersonZipCode1").attr('value', ROW.ConsigneePostcode);
$("#txtTransportationExpenses1").attr('value', ROW.CarriageFare);
$("#txtIncidentalExpenses1").attr('value', ROW.IncidentalExpenses);
$("#txtInsurancePremium1").attr('value', ROW.InsureExpenses);
id12 = ROW.InsuredAmount;
$("#txtAmountInsured1").attr('value', ROW.InsuredAmount);
$("#txtYunJiaFeiHeJi1").attr('value', ROW.AllFeiCount);
id5 = ROW.ClientAgreementInformationID;
id6 = ROW.CarriageFareValue;
id7 = ROW.CarriageFareValue;
}
}
(2).保存费用调整的运单信息
function BaoCunFeiYongTiaoZheng() {
if (confirm("是否保存费用调整")) {
//AllFeiYong =是所用费用的总和
AllFeiYong = parseInt(id12) + parseInt($("#txtTransportationExpenses1").val()) +
//将所用的费用转成整形,不然就是字符串相加
parseInt($("#txtIncidentalExpenses1").val()) +
parseInt($("#txtCostSumUp1").val());
$("#txtYunJiaFeiHeJi1").val(AllFeiYong);
//FeiOrderForTransportationID 要修改费用的主键ID
$.getJSON("/YunShuGuanLi/UpdateFeiYongTiaoZheng?OrderForTransportationList=" + FeiOrderForTransportationID + "&"
+ "CarriageFare=" + $("#txtTransportationExpenses1").val() + "&"
+ "IncidentalExpenses=" + $("#txtIncidentalExpenses1").val() + "&"
+ "CostSumUp=" + $("#txtCostSumUp1").val(),
function (data) {
if (data > 0) {
alert("费用调整成功");
$("#IFeiYongTiaoZheng").panel('close');
$("#tbOrderForTransportationList").datagrid('reload');
$("#tbOrderForTransportationList").datagrid('loadData', data);
$("#tbOrderForTransportationList").datagrid('reload');
}
else {
alert("费用调整失败");
}
}
);
}
}