Browse Source

Merge remote-tracking branch 'origin/master' into dev

Hu Jie 7 years ago
parent
commit
bd8fb08755

+ 16 - 0
db/ddl.sql

@@ -17,6 +17,22 @@
 -- author: hejq
 -- 更新purc$vendors 字段todo_apchek_count长度
   alter table purc$vendors modify todo_apchek_count varchar(200);
+-- date: 2018-12-19 09:51
+-- author: huj
+-- content: 采购明细单增加替代料号、替代料名称、替代料规格三个字段(帝显LED物料需求)
+  alter table `purc$orderitems`
+  add column pd_repprodcode VARCHAR(255)  comment '替代料号',
+  add column pd_repprodtitle VARCHAR(255)  comment '替代料名称',
+  add column pd_repprodspec VARCHAR(255)  comment '替代料规格';
+
+-- date: 2018-12-25 10:51
+-- author: huj
+-- content: 采购明细单增加旧料编号、旧料名称、旧料规格三个字段(帝显LED物料需求)
+alter table `purc$orderitems`
+  add column pd_prodoldcode VARCHAR(255)  comment '旧料编号',
+  add column pd_prodoldtitle VARCHAR(255)  comment '旧料名称',
+  add column pd_prodoldspec VARCHAR(255)  comment '旧料规格';
+
 
 -- date: 2018-12-20 11:34
 -- author: hejq

+ 68 - 0
src/main/java/com/uas/platform/b2b/erp/model/PurchaseDetail.java

@@ -58,6 +58,68 @@ public class PurchaseDetail {
 	private String pd_orispeccode;
 	private List<Attach> attaches;
 
+	//替代料号
+	private String pd_repprodcode;
+	//替代料名称
+	private String pd_repdetail;
+	//替代料规格
+	private String pd_repspec;
+
+	//旧料编号
+	private String pr_oldcode;
+	//旧料名称
+	private String pr_oldname;
+	//旧料规格
+	private String pr_oldspec;
+
+	public String getPr_oldcode() {
+		return pr_oldcode;
+	}
+
+	public void setPr_oldcode(String pr_oldcode) {
+		this.pr_oldcode = pr_oldcode;
+	}
+
+	public String getPr_oldname() {
+		return pr_oldname;
+	}
+
+	public void setPr_oldname(String pr_oldname) {
+		this.pr_oldname = pr_oldname;
+	}
+
+	public String getPr_oldspec() {
+		return pr_oldspec;
+	}
+
+	public void setPr_oldspec(String pr_oldspec) {
+		this.pr_oldspec = pr_oldspec;
+	}
+
+	public String getPd_repprodcode() {
+		return pd_repprodcode;
+	}
+
+	public void setPd_repprodcode(String pd_repprodcode) {
+		this.pd_repprodcode = pd_repprodcode;
+	}
+
+	public String getPd_repdetail() {
+		return pd_repdetail;
+	}
+
+	public void setPd_repdetail(String pd_repdetail) {
+		this.pd_repdetail = pd_repdetail;
+	}
+
+	public String getPd_repspec() {
+		return pd_repspec;
+	}
+
+	public void setPd_repspec(String pd_repspec) {
+		this.pd_repspec = pd_repspec;
+	}
+
 	public String getPd_taxcode() {
 		return pd_taxcode;
 	}
@@ -298,6 +360,12 @@ public class PurchaseDetail {
 		item.setTaxCode(this.pd_taxcode);
 		item.setBillName(this.pd_billname);
 		item.setOriSpecCode(this.pd_orispeccode);
+		item.setRepProdCode(this.pd_repprodcode);
+		item.setRepProdTitle(this.pd_repdetail);
+		item.setRepProdSpec(this.pd_repspec);
+		item.setProdOldCode(this.pr_oldcode);
+		item.setProdOldTitle(this.pr_oldname);
+		item.setProdOldSpec(this.pr_oldspec);
 		if (!CollectionUtils.isEmpty(this.attaches)) {
 			Set<com.uas.platform.b2b.model.Attach> b2bAttaches = new HashSet<com.uas.platform.b2b.model.Attach>();
 			for(Attach attach : this.attaches) {

+ 15 - 2
src/main/java/com/uas/platform/b2b/erp/service/impl/PurchaseProdInOutServiceImpl.java

@@ -126,7 +126,13 @@ public class PurchaseProdInOutServiceImpl implements PurchaseProdInOutService {
                         item.setAccept(existAccept);
                         item.setErpDate(new Date(System.currentTimeMillis()));
                         ProductInfo productInfo = products.get(item.getProdcode());
-                        item.setProduct(productInfo);
+						// 如果物料库存在该物料
+						if (!org.springframework.util.StringUtils.isEmpty(productInfo)) {
+							item.setProduct(productInfo);
+							item.setProdId(productInfo.getId());
+						} else {
+							item.setProduct(purchaseOrderItems.get(0).getProduct());
+						}
                         acceptItems.add(item);
                     } else {
                         if (StringUtils.isEmpty(uuid)) {
@@ -188,6 +194,7 @@ public class PurchaseProdInOutServiceImpl implements PurchaseProdInOutService {
                     List<PurchaseOrderItem> purchaseOrderItems = purchaseOrderItemDao
                             .findByEnUUAndOrderCodeAndNumber(enUU, item.getOrderItem().getOrder().getCode(),
                                     item.getOrderItem().getNumber());
+					ProductInfo productInfo = products.get(item.getProdcode());
                     // 对应的采购单存在
                     if (purchaseOrderItems.size() > 0) {
                         // 对应的采购单明细set进去
@@ -196,7 +203,13 @@ public class PurchaseProdInOutServiceImpl implements PurchaseProdInOutService {
                         // 设置主记录
                         item.setAccept(accept);
                         item.setErpDate(new Date());
-                        item.setProduct(purchaseOrderItems.get(0).getProduct());
+                        // 如果物料库存在该物料
+						if (!org.springframework.util.StringUtils.isEmpty(productInfo)) {
+							item.setProduct(productInfo);
+							item.setProdId(productInfo.getId());
+						} else {
+							item.setProduct(purchaseOrderItems.get(0).getProduct());
+						}
                         acceptItems.add(item);
                     } else {
                         if (StringUtils.isEmpty(uuid)) {

+ 82 - 0
src/main/java/com/uas/platform/b2b/model/PurcOrderInfoItem.java

@@ -262,6 +262,88 @@ public class PurcOrderInfoItem extends AbstractRedDotKey {
 	@Column(name = "pd_orispeccode")
 	private String oriSpecCode;
 
+	/**
+	 * 替代料号
+	 */
+	@Column(name = "pd_repprodcode")
+	private String repProdCode;
+
+	/**
+	 * 替代料名称
+	 */
+	@Column(name = "pd_repprodtitle")
+	private String repProdTitle;
+
+	/**
+	 * 替代料规格
+	 */
+	@Column(name = "pd_repprodspec")
+	private String repProdSpec;
+
+	/**
+	 * 旧料编号
+	 */
+	@Column(name = "pd_prodoldcode")
+	private String prodOldCode;
+	/**
+	 * 旧料名称
+	 */
+	@Column(name = "pd_prodoldtitle")
+	private String prodOldTitle;
+	/**
+	 * 旧料规格
+	 */
+	@Column(name = "pd_prodoldspec")
+	private String prodOldSpec;
+
+	public String getProdOldCode() {
+		return prodOldCode;
+	}
+
+	public void setProdOldCode(String prodOldCode) {
+		this.prodOldCode = prodOldCode;
+	}
+
+	public String getProdOldTitle() {
+		return prodOldTitle;
+	}
+
+	public void setProdOldTitle(String prodOldTitle) {
+		this.prodOldTitle = prodOldTitle;
+	}
+
+	public String getProdOldSpec() {
+		return prodOldSpec;
+	}
+
+	public void setProdOldSpec(String prodOldSpec) {
+		this.prodOldSpec = prodOldSpec;
+	}
+
+	public String getRepProdCode() {
+		return repProdCode;
+	}
+
+	public void setRepProdCode(String repProdCode) {
+		this.repProdCode = repProdCode;
+	}
+
+	public String getRepProdTitle() {
+		return repProdTitle;
+	}
+
+	public void setRepProdTitle(String repProdTitle) {
+		this.repProdTitle = repProdTitle;
+	}
+
+	public String getRepProdSpec() {
+		return repProdSpec;
+	}
+
+	public void setRepProdSpec(String repProdSpec) {
+		this.repProdSpec = repProdSpec;
+	}
+
 	public String getTaxCode() {
 		return taxCode;
 	}

+ 82 - 0
src/main/java/com/uas/platform/b2b/model/PurchaseOrderAllItem.java

@@ -265,6 +265,40 @@ public class PurchaseOrderAllItem extends AbstractRedDotKey {
 	@Column(name = "pd_orispeccode")
 	private String oriSpecCode;
 
+	/**
+	 * 替代料号
+	 */
+	@Column(name = "pd_repprodcode")
+	private String repProdCode;
+
+	/**
+	 * 替代料名称
+	 */
+	@Column(name = "pd_repprodtitle")
+	private String repProdTitle;
+
+	/**
+	 * 替代料规格
+	 */
+	@Column(name = "pd_repprodspec")
+	private String repProdSpec;
+
+	/**
+	 * 旧料编号
+	 */
+	@Column(name = "pd_prodoldcode")
+	private String prodOldCode;
+	/**
+	 * 旧料名称
+	 */
+	@Column(name = "pd_prodoldtitle")
+	private String prodOldTitle;
+	/**
+	 * 旧料规格
+	 */
+	@Column(name = "pd_prodoldspec")
+	private String prodOldSpec;
+
 	/**
 	 * 是否在变更中
 	 */
@@ -277,6 +311,54 @@ public class PurchaseOrderAllItem extends AbstractRedDotKey {
 	@Transient
 	private Double latestReplyQty;
 
+	public String getProdOldCode() {
+		return prodOldCode;
+	}
+
+	public void setProdOldCode(String prodOldCode) {
+		this.prodOldCode = prodOldCode;
+	}
+
+	public String getProdOldTitle() {
+		return prodOldTitle;
+	}
+
+	public void setProdOldTitle(String prodOldTitle) {
+		this.prodOldTitle = prodOldTitle;
+	}
+
+	public String getProdOldSpec() {
+		return prodOldSpec;
+	}
+
+	public void setProdOldSpec(String prodOldSpec) {
+		this.prodOldSpec = prodOldSpec;
+	}
+
+	public String getRepProdCode() {
+		return repProdCode;
+	}
+
+	public void setRepProdCode(String repProdCode) {
+		this.repProdCode = repProdCode;
+	}
+
+	public String getRepProdTitle() {
+		return repProdTitle;
+	}
+
+	public void setRepProdTitle(String repProdTitle) {
+		this.repProdTitle = repProdTitle;
+	}
+
+	public String getRepProdSpec() {
+		return repProdSpec;
+	}
+
+	public void setRepProdSpec(String repProdSpec) {
+		this.repProdSpec = repProdSpec;
+	}
+
 	public String getTaxCode() {
 		return taxCode;
 	}

+ 82 - 0
src/main/java/com/uas/platform/b2b/model/PurchaseOrderDoneItem.java

@@ -188,6 +188,40 @@ public class PurchaseOrderDoneItem extends AbstractOrderProduct {
 	 */
 	@Column(name = "pd_acceptcustaddress")
 	private  String acceptCustAddress;
+	/**
+	 * 替代料号
+	 */
+	@Column(name = "pd_repprodcode")
+	private String repProdCode;
+
+	/**
+	 * 替代料名称
+	 */
+	@Column(name = "pd_repprodtitle")
+	private String repProdTitle;
+
+	/**
+	 * 替代料规格
+	 */
+	@Column(name = "pd_repprodspec")
+	private String repProdSpec;
+
+	/**
+	 * 旧料编号
+	 */
+	@Column(name = "pd_prodoldcode")
+	private String prodOldCode;
+	/**
+	 * 旧料名称
+	 */
+	@Column(name = "pd_prodoldtitle")
+	private String prodOldTitle;
+	/**
+	 * 旧料规格
+	 */
+	@Column(name = "pd_prodoldspec")
+	private String prodOldSpec;
+
 
 	/**
 	 * 最后一次回复数量
@@ -195,6 +229,54 @@ public class PurchaseOrderDoneItem extends AbstractOrderProduct {
 	@Transient
 	private Double latestReplyQty;
 
+	public String getProdOldCode() {
+		return prodOldCode;
+	}
+
+	public void setProdOldCode(String prodOldCode) {
+		this.prodOldCode = prodOldCode;
+	}
+
+	public String getProdOldTitle() {
+		return prodOldTitle;
+	}
+
+	public void setProdOldTitle(String prodOldTitle) {
+		this.prodOldTitle = prodOldTitle;
+	}
+
+	public String getProdOldSpec() {
+		return prodOldSpec;
+	}
+
+	public void setProdOldSpec(String prodOldSpec) {
+		this.prodOldSpec = prodOldSpec;
+	}
+
+	public String getRepProdCode() {
+		return repProdCode;
+	}
+
+	public void setRepProdCode(String repProdCode) {
+		this.repProdCode = repProdCode;
+	}
+
+	public String getRepProdTitle() {
+		return repProdTitle;
+	}
+
+	public void setRepProdTitle(String repProdTitle) {
+		this.repProdTitle = repProdTitle;
+	}
+
+	public String getRepProdSpec() {
+		return repProdSpec;
+	}
+
+	public void setRepProdSpec(String repProdSpec) {
+		this.repProdSpec = repProdSpec;
+	}
+
 	public Long getId() {
 		return id;
 	}

+ 42 - 0
src/main/java/com/uas/platform/b2b/model/PurchaseOrderEnd.java

@@ -215,6 +215,48 @@ public class PurchaseOrderEnd {
 	@Column(name = "pu_custname")
 	private String custName; // 客户名称。
 
+	/**
+	 * 替代料号
+	 */
+	@Column(name = "pd_repprodcode")
+	private String repProdCode;
+
+	/**
+	 * 替代料名称
+	 */
+	@Column(name = "pd_repprodtitle")
+	private String repProdTitle;
+
+	/**
+	 * 替代料规格
+	 */
+	@Column(name = "pd_repprodspec")
+	private String repProdSpec;
+
+	public String getRepProdCode() {
+		return repProdCode;
+	}
+
+	public void setRepProdCode(String repProdCode) {
+		this.repProdCode = repProdCode;
+	}
+
+	public String getRepProdTitle() {
+		return repProdTitle;
+	}
+
+	public void setRepProdTitle(String repProdTitle) {
+		this.repProdTitle = repProdTitle;
+	}
+
+	public String getRepProdSpec() {
+		return repProdSpec;
+	}
+
+	public void setRepProdSpec(String repProdSpec) {
+		this.repProdSpec = repProdSpec;
+	}
+
 	public String getPurpose() {
 		return purpose;
 	}

+ 82 - 0
src/main/java/com/uas/platform/b2b/model/PurchaseOrderItem.java

@@ -210,6 +210,88 @@ public class PurchaseOrderItem extends AbstractRedDotKey {
 	@Column(name = "pd_acceptcustaddress")
 	private  String acceptCustAddress;
 
+	/**
+	 * 替代料号
+	 */
+	@Column(name = "pd_repprodcode")
+	private String repProdCode;
+
+	/**
+	 * 替代料名称
+	 */
+	@Column(name = "pd_repprodtitle")
+	private String repProdTitle;
+
+	/**
+	 * 替代料规格
+	 */
+	@Column(name = "pd_repprodspec")
+	private String repProdSpec;
+
+	/**
+	 * 旧料编号
+	 */
+	@Column(name = "pd_prodoldcode")
+	private String prodOldCode;
+	/**
+	 * 旧料名称
+	 */
+	@Column(name = "pd_prodoldtitle")
+	private String prodOldTitle;
+	/**
+	 * 旧料规格
+	 */
+	@Column(name = "pd_prodoldspec")
+	private String prodOldSpec;
+
+	public String getProdOldCode() {
+		return prodOldCode;
+	}
+
+	public void setProdOldCode(String prodOldCode) {
+		this.prodOldCode = prodOldCode;
+	}
+
+	public String getProdOldTitle() {
+		return prodOldTitle;
+	}
+
+	public void setProdOldTitle(String prodOldTitle) {
+		this.prodOldTitle = prodOldTitle;
+	}
+
+	public String getProdOldSpec() {
+		return prodOldSpec;
+	}
+
+	public void setProdOldSpec(String prodOldSpec) {
+		this.prodOldSpec = prodOldSpec;
+	}
+
+	public String getRepProdCode() {
+		return repProdCode;
+	}
+
+	public void setRepProdCode(String repProdCode) {
+		this.repProdCode = repProdCode;
+	}
+
+	public String getRepProdTitle() {
+		return repProdTitle;
+	}
+
+	public void setRepProdTitle(String repProdTitle) {
+		this.repProdTitle = repProdTitle;
+	}
+
+	public String getRepProdSpec() {
+		return repProdSpec;
+	}
+
+	public void setRepProdSpec(String repProdSpec) {
+		this.repProdSpec = repProdSpec;
+	}
+
 	public Long getId() {
 		return id;
 	}

+ 81 - 0
src/main/java/com/uas/platform/b2b/model/PurchaseOrderTodoItem.java

@@ -178,6 +178,39 @@ public class PurchaseOrderTodoItem extends AbstractOrderProduct {
 	 */
 	@Column(name = "pd_acceptcustaddress")
 	private  String acceptCustAddress;
+	/**
+	 * 替代料号
+	 */
+	@Column(name = "pd_repprodcode")
+	private String repProdCode;
+
+	/**
+	 * 替代料名称
+	 */
+	@Column(name = "pd_repprodtitle")
+	private String repProdTitle;
+
+	/**
+	 * 替代料规格
+	 */
+	@Column(name = "pd_repprodspec")
+	private String repProdSpec;
+
+	/**
+	 * 旧料编号
+	 */
+	@Column(name = "pd_prodoldcode")
+	private String prodOldCode;
+	/**
+	 * 旧料名称
+	 */
+	@Column(name = "pd_prodoldtitle")
+	private String prodOldTitle;
+	/**
+	 * 旧料规格
+	 */
+	@Column(name = "pd_prodoldspec")
+	private String prodOldSpec;
 
     /**
      * 最后一次回复数量
@@ -185,6 +218,54 @@ public class PurchaseOrderTodoItem extends AbstractOrderProduct {
 	@Transient
 	private Double latestReplyQty;
 
+	public String getProdOldCode() {
+		return prodOldCode;
+	}
+
+	public void setProdOldCode(String prodOldCode) {
+		this.prodOldCode = prodOldCode;
+	}
+
+	public String getProdOldTitle() {
+		return prodOldTitle;
+	}
+
+	public void setProdOldTitle(String prodOldTitle) {
+		this.prodOldTitle = prodOldTitle;
+	}
+
+	public String getProdOldSpec() {
+		return prodOldSpec;
+	}
+
+	public void setProdOldSpec(String prodOldSpec) {
+		this.prodOldSpec = prodOldSpec;
+	}
+
+	public String getRepProdCode() {
+		return repProdCode;
+	}
+
+	public void setRepProdCode(String repProdCode) {
+		this.repProdCode = repProdCode;
+	}
+
+	public String getRepProdTitle() {
+		return repProdTitle;
+	}
+
+	public void setRepProdTitle(String repProdTitle) {
+		this.repProdTitle = repProdTitle;
+	}
+
+	public String getRepProdSpec() {
+		return repProdSpec;
+	}
+
+	public void setRepProdSpec(String repProdSpec) {
+		this.repProdSpec = repProdSpec;
+	}
+
 	public String getPurcVendName() {
 		return purcVendName;
 	}

+ 81 - 0
src/main/java/com/uas/platform/b2b/model/PurchaseOrderWaitingItem.java

@@ -187,6 +187,39 @@ public class PurchaseOrderWaitingItem extends AbstractOrderProduct {
 	 */
 	@Column(name = "pd_acceptcustaddress")
 	private  String acceptCustAddress;
+	/**
+	 * 替代料号
+	 */
+	@Column(name = "pd_repprodcode")
+	private String repProdCode;
+
+	/**
+	 * 替代料名称
+	 */
+	@Column(name = "pd_repprodtitle")
+	private String repProdTitle;
+
+	/**
+	 * 替代料规格
+	 */
+	@Column(name = "pd_repprodspec")
+	private String repProdSpec;
+
+	/**
+	 * 旧料编号
+	 */
+	@Column(name = "pd_prodoldcode")
+	private String prodOldCode;
+	/**
+	 * 旧料名称
+	 */
+	@Column(name = "pd_prodoldtitle")
+	private String prodOldTitle;
+	/**
+	 * 旧料规格
+	 */
+	@Column(name = "pd_prodoldspec")
+	private String prodOldSpec;
 
 	/**
 	 * 关键词查询相关
@@ -200,6 +233,54 @@ public class PurchaseOrderWaitingItem extends AbstractOrderProduct {
 	@Transient
 	private Double latestReplyQty;
 
+	public String getProdOldCode() {
+		return prodOldCode;
+	}
+
+	public void setProdOldCode(String prodOldCode) {
+		this.prodOldCode = prodOldCode;
+	}
+
+	public String getProdOldTitle() {
+		return prodOldTitle;
+	}
+
+	public void setProdOldTitle(String prodOldTitle) {
+		this.prodOldTitle = prodOldTitle;
+	}
+
+	public String getProdOldSpec() {
+		return prodOldSpec;
+	}
+
+	public void setProdOldSpec(String prodOldSpec) {
+		this.prodOldSpec = prodOldSpec;
+	}
+
+	public String getRepProdCode() {
+		return repProdCode;
+	}
+
+	public void setRepProdCode(String repProdCode) {
+		this.repProdCode = repProdCode;
+	}
+
+	public String getRepProdTitle() {
+		return repProdTitle;
+	}
+
+	public void setRepProdTitle(String repProdTitle) {
+		this.repProdTitle = repProdTitle;
+	}
+
+	public String getRepProdSpec() {
+		return repProdSpec;
+	}
+
+	public void setRepProdSpec(String repProdSpec) {
+		this.repProdSpec = repProdSpec;
+	}
+
 	public Long getId() {
 		return id;
 	}

+ 42 - 10
src/main/webapp/resources/tpl/index/purc/order.html

@@ -160,7 +160,7 @@
 	top: -2px;
 }
 	.order-table .product div.text-over {
-		width: 340px;
+		width: 300px;
 		white-space: nowrap;
 		text-overflow: ellipsis;
 		overflow: hidden;
@@ -179,11 +179,14 @@
 .order-table .product div.text-overflow span{
 	float: left;
 	display: inline-block;
-	width: 340px;
+	width: 300px;
 	white-space: nowrap;
 	text-overflow: ellipsis;
 	overflow: hidden;
 }
+.auto-row {
+	width: 270px;word-wrap:break-word;
+}
 </style>
 <link rel="stylesheet" href="static/css/public.css">
 <div class="block" id="public">
@@ -305,18 +308,19 @@
 <table class="order-table block" ng-table="tableParams">
 	<thead>
 		<tr class="header">
-			<th>物料</th>
+			<th width="200">物料</th>
+			<th width="130"></th>
 			<th width="80">含税单价</th>
 			<th width="100">税率</th>
 			<th width="100">数量</th>
-			<th width="120">交货日期</th>
+			<th width="130">交货日期</th>
 			<th width="180">单据状态</th>
 			<th width="120">供应商</th>
 		</tr>
 	</thead>
 	<tbody ng-if="tableParams.total() == 0">
 	<tr>
-		<td colspan="7">
+		<td colspan="8">
 			<div id="empty">
 				<div class="left_img">
 					<a href="http://www.usoftchina.com/" target="_blank" title="优软云首页"><img src="static/img/empty/uas_empty.png"></a>
@@ -329,7 +333,7 @@
 		</td>
 	</tr>
 	<tr>
-		<td colspan="7">
+		<td colspan="8">
 			<div id="empty_info">
 				<div class="f16 text-center empty_title">
 					<p>为什么我没有采购订单?</p>
@@ -354,7 +358,7 @@
 	</tbody>
 	<tbody ng-repeat="order in $data track by order.id">
 		<tr class="order-hd" ng-dblclick="order.$collapsed=!order.$collapsed" ng-class="{'text-bold': order.display>0}">
-			<td class="first" colspan="5">
+			<td class="first" colspan="6">
 				<div class="order-main">
 					<a href="javascript:void(0)" ng-if="!isUnread(order.id)">
 						<i class="fa fa-circle-thin"></i>
@@ -401,9 +405,37 @@
 				<div class="text-muted text-over"
 					 title="{{::item.product.spec}}"
 					ng-bind="::item.product.spec"></div>
-				<div class="text-muted text-bold text-overflow" ng-if="item.vendspec" title="{{item.vendspec}}"><span ng-bind="::item.vendspec"></span></div>
-				<div class="text-bold text-inverse text-flow" ng-if="item.factory" title="{{item.factory}}"><b>送货工厂:</b><span ng-bind="::item.factory"></span></div>
-				<div class="text-bold text-inverse text-flow" ng-if="item.remark" title="{{item.remark}}"><b>备注:</b><span ng-bind="::item.remark"></span></div>
+				<div class="text-bold text-inverse text-flow" ng-if="item.prodOldCode" ><b>旧料编号:</b><div ng-bind="::item.prodOldCode"></div></div>
+				<div class="text-bold text-inverse text-flow" ng-if="item.prodOldTitle" ><b>旧料名称:</b><div ng-bind="::item.prodOldTitle"></div></div>
+				<div class="text-bold text-inverse text-flow" ng-if="item.prodOldSpec" ><b>旧料规格:</b><div ng-bind="::item.prodOldSpec"></div></div>
+				<div class="text-bold text-inverse text-flow" ng-if="item.vendspec" title="{{item.vendspec}}"><div ng-bind="::item.vendspec"></div></div>
+				<div class="text-bold text-inverse text-flow" ng-if="item.factory" title="{{item.factory}}"><b>送货工厂:</b><div ng-bind="::item.factory"></div></div>
+				<div class="text-bold text-inverse text-flow" ng-if="item.remark" title="{{item.remark}}"><b>备注:</b><div ng-bind="::item.remark"></d></div>
+			</td>
+			<td class="text-center">
+				<div ng-if="item.repProdCode" class="dropdown">
+					<a href="javascript:void(0);" class="dropdown-toggle text-default"
+					   ng-mouseover="getRepProd(item)">替代物料<i class="fa fa-fw fa-angle-down"></i></a>
+					<div class="dropdown-menu pane" style="width: 300px;">
+						<div class="pane-body">
+							<ul class="list-unstyled list-menu">
+								<li >
+									<div class="text-muted auto-row" ng-if="item.repProdCode != null">
+										<div class="text-bold text-inverse text-flow">替代料号:</div>{{::item.repProdCode}}
+									</div>
+								</li>
+								<li >
+									<div class="text-muted auto-row" ng-if="item.repProdTitle != null">
+										<div class="text-bold text-inverse text-flow">替代料名称:</div>{{::item.repProdTitle}}</div>
+								</li>
+								<li >
+									<div class="text-muted auto-row" ng-if="item.repProdSpec != null">
+										<div class="text-bold text-inverse text-flow">替代料规格:</div>{{::item.repProdSpec}}</div>
+								</li>
+							</ul>
+						</div>
+					</div>
+				</div>
 			</td>
 			<td class="text-center">
 				<div ng-if="!isUser" class="text-num" ng-bind="::item.price | number:6"></div>

+ 6 - 3
src/main/webapp/resources/tpl/index/purc/order_detail.html

@@ -132,9 +132,12 @@
 								<span ng-bind="::item.product.title"></span>
 							</div>
 							<div class="text-muted text-over" ng-bind="::item.product.spec" title="{{::item.product.spec}}"></div>
-							<div class="text-muted text-bold text-overflow" ng-if="item.vendspec" title="{{item.vendspec}}"><span ng-bind="::item.vendspec"></span></div>
-							<div class="text-bold text-inverse text-flow" ng-if="item.factory" title="{{item.factory}}"><b>送货工厂:</b><span ng-bind="::item.factory"></span></div>
-							<div class="text-bold text-inverse text-flow" ng-if="item.remark" title="{{item.remark}}"><b>备注:</b><span ng-bind="::item.remark"></span></div>
+							<div class="text-bold text-inverse text-flow" ng-if="item.prodOldCode" ><b>旧料编号:</b><div ng-bind="::item.prodOldCode"></div></div>
+							<div class="text-bold text-inverse text-flow" ng-if="item.prodOldTitle" ><b>旧料名称:</b><div ng-bind="::item.prodOldTitle"></div></div>
+							<div class="text-bold text-inverse text-flow" ng-if="item.prodOldSpec" ><b>旧料规格:</b><div ng-bind="::item.prodOldSpec"></div></div>
+							<div class="text-bold text-inverse text-flow" ng-if="item.vendspec" title="{{item.vendspec}}"><div ng-bind="::item.vendspec"></div></div>
+							<div class="text-bold text-inverse text-flow" ng-if="item.factory" title="{{item.factory}}"><b>送货工厂:</b><div ng-bind="::item.factory"></div></div>
+							<div class="text-bold text-inverse text-flow" ng-if="item.remark" title="{{item.remark}}"><b>备注:</b><div ng-bind="::item.remark"></div></div>
 						</td>
 						<td class="text-center" width="110">
 							<div ng-if="!isUser" class="text-num" ng-bind="::item.price | number:6"></div>

+ 10 - 10
src/main/webapp/resources/tpl/index/sale/accept.html

@@ -219,23 +219,23 @@
 			<tr class="order-bd" ng-repeat="item in accept.acceptItems">
 				<td class="product">
 					<div class="text-num text-bold">
-						<span ng-bind="item.orderItem.product.code"
-							ng-if="item.orderItem.product.code != null"></span> <span
-							ng-bind="item.product.code"
-							ng-if="item.orderItem.product.code == null"></span>
+						<span ng-bind="item.product.code"
+							  ng-if="item.product.code != null"></span> <span
+							ng-bind="item.orderItem.product.code"
+							ng-if="item.product.code == null"></span>
 					</div>
 					<div>
 						<span ng-bind="item.orderItem.product.title"
-							ng-if="item.orderItem.product.title != null"></span> <span
+							  ng-if="item.product.title == null"></span> <span
 							ng-bind="item.product.title"
-							ng-if="item.orderItem.product.title == null"></span>
+							ng-if="item.product.title != null"></span>
 					</div>
-					<div class="text-muted" title="{{item.orderItem.product.spec}}"
-						ng-bind="item.orderItem.product.spec"
-						ng-if="item.orderItem.product.spec != null"></div>
 					<div class="text-muted" title="{{item.product.spec}}"
 						ng-bind="item.product.spec"
-						ng-if="item.orderItem.product.spec == null"></div>
+						ng-if="item.product.spec != null"></div>
+					<div class="text-muted" title="{{item.orderItem.product.spec}}"
+						ng-bind="item.orderItem.product.spec"
+						ng-if="item.product.spec == null"></div>
 					<div class="text-bold text-inverse" title="送货工厂"
 						ng-if="item.orderItem.factory">
 						送货工厂:<span ng-bind="::item.orderItem.factory"></span>

+ 39 - 3
src/main/webapp/resources/tpl/index/sale/notice.html

@@ -7,6 +7,10 @@
         border-bottom: 1px solid #e8e8e8;
     }
 
+    .auto-row {
+        width: 270px;word-wrap:break-word;
+    }
+
     .order-table .sep-row {
         height: 10px;
     }
@@ -295,6 +299,7 @@
         <thead>
         <tr class="header">
             <th width="200">产品</th>
+            <th width="120"></th>
             <th width="150">备注</th>
             <th width="200">数量</th>
             <th width="140">价格</th>
@@ -302,7 +307,7 @@
             <th width="100">操作</th>
         </tr>
         <tr class="sep-row">
-            <td colspan="6"></td>
+            <td colspan="7"></td>
         </tr>
         <tr class="toolbar toolbar-top">
             <td colspan="5">
@@ -322,12 +327,12 @@
             </td>
         </tr>
         <tr class="sep-row">
-            <td colspan="6"></td>
+            <td colspan="7"></td>
         </tr>
         </thead>
         <tbody ng-repeat="notice in $data track by notice.id">
         <tr class="order-hd">
-            <td class="first" colspan="3">
+            <td class="first" colspan="4">
                 <div class="order-main">
 					<span> <input type="checkbox" ng-disabled="notice.waiting" class="selector"
                               ng-model="notice.$selected" ng-click="checkOne(notice)">
@@ -383,6 +388,12 @@
                 </div>
                 <div class="text-muted text-ellipsis"
                      ng-bind="::notice.orderItem.product.spec"></div>
+                <div class="text-bold text-inverse" ng-if="notice.orderItem.prodOldCode">旧料编号:<span
+                        ng-bind="::notice.orderItem.prodOldCode"></span></div>
+                <div class="text-bold text-inverse" ng-if="notice.orderItem.prodOldTitle">旧料名称:<span
+                        ng-bind="::notice.orderItem.prodOldTitle"></span></div>
+                <div class="text-bold text-inverse" ng-if="notice.orderItem.prodOldSpec">旧料规格:<span
+                        ng-bind="::notice.orderItem.prodOldSpec"></span></div>
                 <div class="text-bold text-inverse" ng-if="notice.orderItem.factory">送货工厂:<span
                         ng-bind="::notice.orderItem.factory"></span></div>
                 <div class="text-bold text-inverse" ng-if="notice.orderItem.custPurchaseCode">客户采购单号:<span
@@ -390,6 +401,31 @@
                 <div class="text-bold text-inverse" ng-if="notice.orderItem.acceptCustName">收货客户:<span
                         ng-bind="::notice.orderItem.acceptCustName"></span></div>
             </td>
+            <td class="text-center">
+                <div ng-if="notice.orderItem.repProdCode" class="dropdown">
+                    <a href="javascript:void(0);" class="dropdown-toggle text-default"
+                       ng-mouseover="getRepProd(notice.orderItem)">替代物料<i class="fa fa-fw fa-angle-down"></i></a>
+                    <div class="dropdown-menu pane" style="width: 300px;">
+                        <div class="pane-body">
+                            <ul class="list-unstyled list-menu">
+                                <li >
+                                    <div class="text-muted auto-row" ng-if="notice.orderItem.repProdCode != null">
+                                        <div class="text-bold text-inverse text-flow">替代料号:</div>{{::notice.orderItem.repProdCode}}
+                                    </div>
+                                </li>
+                                <li >
+                                    <div class="text-muted auto-row" ng-if="notice.orderItem.repProdTitle != null">
+                                        <div class="text-bold text-inverse text-flow">替代料名称:</div>{{::notice.orderItem.repProdTitle}}</div>
+                                </li>
+                                <li >
+                                    <div class="text-muted auto-row" ng-if="notice.orderItem.repProdSpec != null">
+                                        <div class="text-bold text-inverse text-flow">替代料规格:</div>{{::notice.orderItem.repProdSpec}}</div>
+                                </li>
+                            </ul>
+                        </div>
+                    </div>
+                </div>
+            </td>
             <td class="text-center">
                 <div ng-show="!notice.$editing">{{notice.remark}}</div>
                 <div ng-if="notice.$editing">

+ 42 - 80
src/main/webapp/resources/tpl/index/sale/order.html

@@ -4,7 +4,9 @@
 	height: 36px;
 	opacity: 1;
 }
-
+.auto-row {
+	width: 270px;word-wrap:break-word;
+}
 .condition .more .form-group {
 	/*margin-bottom: 10px;*/
 }
@@ -215,56 +217,6 @@
 					</div>
 				</div>
 			</div>
-			<!--<div class="col-xs-5">
-				<div class="search">
-					<div class="form-group form-group-sm has-feedback" dropdown auto-close="outsideClick" on-toggle="searchAdvance=open">
-						<input type="search" class="form-control input-sm" ng-model="keyword" ng-search="onSearch()" placeholder="输入商品、客户名称或单据流水号搜索" />
-						<div class="search-advance text-link" ng-class="{'active': searchAdvance}" dropdown-toggle>高级搜索</div>
-						<div id="searchContainer" class="dropdown-menu">
-							&lt;!&ndash; <div class="block">
-								<form action="" class="form-horizontal">
-									<div class="form-group">
-										<label for="" class="col-xs-3 text-right control-label">关键词:</label>
-										<div class="col-xs-6"><input type="text" class="form-control" /></div>
-									</div>
-									<div class="form-group">
-										<label for="" class="col-xs-3 text-right control-label">交货日期:</label>
-										<div class="col-xs-6"><input type="text" class="form-control" /></div>
-									</div>
-									<div class="form-group">
-										<label for="orderDate" class="col-xs-3 text-right control-label">订单日期:</label>
-										<div class="col-xs-6"><input id="orderDate" type="text" class="form-control" /></div>
-									</div>
-									<div class="form-group">
-										<label for="" class="col-xs-3 text-right control-label">单价:</label>
-										<div class="col-xs-6"><input type="text" class="form-control" /></div>
-									</div>
-									<div class="form-group">
-										<label for="" class="col-xs-3 text-right control-label">
-											金额:
-										</label>
-										<div class="col-xs-6"><input type="text" class="form-control" /></div>
-									</div>
-									<div class="form-group">
-										<div for="" class="col-xs-12 text-right">
-											<button class="btn btn-info btn-xs">确定</button>
-										</div>
-									</div>
-								</form>
-							</div> &ndash;&gt;
-						</div>
-						<span class="form-control-feedback text-simple"><i class="fa fa-search"></i></span>
-					</div>
-				</div>
-			</div>
-			<div class="col-xs-1">
-				<div class="text-default f14 total">
-					共 <span ng-bind="tableParams.total()" class="text-num"></span>
-				</div>
-			</div>
-			<div class="col-xs-2 toggle">
-				<a ng-click="condition.$open=!condition.$open" class="text-simple"><span ng-bind="condition.$open ? '简化筛选条件' : '更多筛选条件'"></span><i class="fa fa-fw" ng-class="{'fa-angle-up': condition.$open, 'fa-angle-down': !condition.$open}"></i></a>
-			</div>-->
 		</div>
 	</div>
 <!--<div class="height10">&nbsp;</div>-->
@@ -337,7 +289,8 @@
 <table class="order-table block" ng-table="tableParams">
 	<thead>
 		<tr class="header">
-			<th width="400">产品</th>
+			<th width="300">产品</th>
+			<th width="120"></th>
 			<th width="100">单价</th>
 			<th width="100">数量</th>
 			<th width="120">交货日期</th>
@@ -345,7 +298,7 @@
 			<th width="100">操作</th>
 		</tr>
 		<tr class="sep-row">
-			<td colspan="6"></td>
+			<td colspan="7"></td>
 		</tr>
 		<tr class="toolbar toolbar-top">
 			<td colspan="5">
@@ -353,16 +306,6 @@
 					<label><input type="checkbox" class="selector select_all"
 						ng-model="checkboxes.checked" ng-click="checkAll()">全选</label> <a ng-if="active=='todo'" href="javascript:void(0)"
 						class="btn btn-default btn-xs" ng-click="replyByBatch();setOrdersReadByBatch()" title="选中的单据按照客户需求的数量和交期默认回复">&nbsp;批量回复&nbsp;</a>
-						<!--<div class="btn-group dropdown">
-  							<button type="button" class="btn btn-default btn-xs dropdown-toggle" data-toggle="dropdown" aria-expanded="true">
-    							&nbsp;&nbsp;标记为&nbsp;&nbsp;<span class="caret"></span>&nbsp;
-  							</button>
-  							<ul class="dropdown-menu" role="menu">
-    							<li><a href="javascript:void(0)" ng-click="setDisplay('setRead')">已查看</a></li>
-    							<li><a href="javascript:void(0)" ng-click="setDisplay('setUnRead')">未查看</a></li>
-    							<li><a href="javascript:void(0)" ng-click="setDisplay('setTop')">置顶</a></li>
-  							</ul>
-						</div>-->
 						<span class="text-muted">
 							&nbsp;&nbsp;<i class="fa fa-exclamation-triangle"></i> 批量回复是对选中的单据按照满足客户需求的数量和交期默认回复。
 						</span>
@@ -373,12 +316,12 @@
 			</td>
 		</tr>
 		<tr class="sep-row">
-			<td colspan="6"></td>
+			<td colspan="7"></td>
 		</tr>
 	</thead>
 	<tbody ng-if="tableParams.total() == 0">
 	<tr>
-		<td colspan="6">
+		<td colspan="7">
 			<div id="empty">
 				<div class="left_img">
 					<a href="http://www.usoftchina.com/" target="_blank" title="优软云首页"><img src="static/img/empty/uas_empty.png"></a>
@@ -391,7 +334,7 @@
 		</td>
 	</tr>
 		<tr>
-			<td colspan="6">
+			<td colspan="7">
 				<div id="empty_info">
 					<div class="f16 text-center empty_title">
 						<p>为什么我没有接收到客户的采购订单?</p>
@@ -436,11 +379,11 @@
 					<span>订单号:<a class="text-num order-detail" ng-bind="::order.code" ui-sref="sale.order_detail({id:order.id})" target="_self" title="查看详情" ng-click="setOrdersRead(order.id)"></a></span>
 				</div>
 			</td>
-			<td ng-if="!isUser" colspan="1" class="order-sum">{{::order.currency}}: <span
+			<td ng-if="!isUser" colspan="2" class="order-sum">{{::order.currency}}: <span
 				ng-bind="getOrderTotal(order.orderItems) | number : 2"
 				class="text-num text-bold"></span>
 			</td>
-			<td ng-if="isUser" colspan="1" class="order-sum"></td>
+			<td ng-if="isUser" colspan="2" class="order-sum"></td>
 			<td colspan="1" class="text-center">
 				<span ng-if="order.print" class="label ng-scope operates-status" style="margin-right: 5px;background-color: #5D6C79">已打印</span>
 				<span ng-if="!order.print" class="label ng-scope operates-status" style="margin-right: 5px;background-color: #CA3955">未打印</span>
@@ -465,12 +408,40 @@
 				<div class="text-muted text-over"
 					 title="{{::item.product.spec}}"
 					ng-bind="::item.product.spec"></div>
+				<div class="text-bold text-inverse text-flow" ng-if="item.prodOldCode" ><b>旧料编号:</b><div ng-bind="::item.prodOldCode"></div></div>
+				<div class="text-bold text-inverse text-flow" ng-if="item.prodOldTitle" ><b>旧料名称:</b><div ng-bind="::item.prodOldTitle"></div></div>
+				<div class="text-bold text-inverse text-flow" ng-if="item.prodOldSpec" ><b>旧料规格:</b><div ng-bind="::item.prodOldSpec"></div></div>
 				<div class="text-bold text-inverse text-flow" ng-if="item.custPurchaseCode" ><b>客户采购单号:</b><div ng-bind="::item.custPurchaseCode"></div></div>
 				<div class="text-bold text-inverse text-flow" ng-if="item.acceptCustName" ><b>收货客户:</b><div ng-bind="::item.acceptCustName"></div></div>
 				<div class="text-bold text-inverse text-flow" ng-if="item.acceptCustAddress" ><b>客户收货地址:</b><div ng-bind="::item.acceptCustAddress"></div></div>
-				<div class="text-muted text-bold text-overflow" ng-if="item.vendspec" title="{{item.vendspec}}"><span ng-bind="::item.vendspec"></span></div>
-				<div class="text-bold text-inverse text-flow" ng-if="item.factory" title="{{item.factory}}"><b>送货工厂:</b><span ng-bind="::item.factory"></span></div>
-				<div class="text-bold text-inverse text-flow" ng-if="item.remark" title="{{item.remark}}"><b>备注:</b><span ng-bind="::item.remark"></span></div>
+				<div class="text-bold text-inverse text-flow" ng-if="item.vendspec" title="{{item.vendspec}}"><div ng-bind="::item.vendspec"></div></div>
+				<div class="text-bold text-inverse text-flow" ng-if="item.factory" title="{{item.factory}}"><b>送货工厂:</b><div ng-bind="::item.factory"></div></div>
+				<div class="text-bold text-inverse text-flow" ng-if="item.remark" title="{{item.remark}}"><b>备注:</b><div ng-bind="::item.remark"></div></div>
+			</td>
+			<td class="text-center">
+				<div ng-if="item.repProdCode" class="dropdown" ng-class="text-center">
+					<a href="javascript:void(0);" class="dropdown-toggle text-default"
+					   ng-mouseover="getRepProd(item)">替代物料<i class="fa fa-fw fa-angle-down"></i></a>
+					<div class="dropdown-menu pane" style="width: 300px;">
+						<div class="pane-body">
+							<ul class="list-unstyled list-menu">
+								<li >
+									<div class="text-muted auto-row" ng-if="item.repProdCode != null" >
+										<div class="text-bold text-inverse text-flow">替代料号:</div>{{::item.repProdCode}}
+									</div>
+								</li>
+								<li >
+									<div class="text-muted auto-row" ng-if="item.repProdTitle != null" >
+										<div class="text-bold text-inverse text-flow">替代料名称:</div>{{::item.repProdTitle}}</div>
+								</li>
+								<li >
+									<div class="text-muted auto-row" ng-if="item.repProdSpec != null">
+										<div class="text-bold text-inverse text-flow">替代料规格:</div>{{::item.repProdSpec}}</div>
+								</li>
+							</ul>
+						</div>
+					</div>
+				</div>
 			</td>
 			<td class="text-center">
 				<div ng-if="!isUser" class="text-num" ng-bind="::item.price | number:6"></div>
@@ -510,15 +481,6 @@
 				<div ng-if="!item.$editing">
 					<div ng-if="!item.replyQty" class="text-muted text-center">未回复</div>
 					<div ng-if="item.replyQty > 0 && item.replyQty < item.qty">
-						<!--<div class="progress progress-sm">
-							<div class="progress-bar progress-bar-success"
-								ng-style="{'width': 100*item.replyQty/item.qty + '%'}">
-								<span class="sr-only"></span>
-							</div>
-						</div>
-						已回复 <span class="text-default">{{::item.replyQty}}</span> /
-						<span>{{::item.qty}}</span>-->
-
 						已回复 <span class="text-default">{{::item.latestReplyQty}}</span>
 
 					</div>

+ 10 - 7
src/main/webapp/resources/tpl/index/sale/order_detail.html

@@ -122,7 +122,7 @@
 				<thead>
 					<tr class="header">
 						<th width="50">序号</th>
-						<th width="200">产品</th>
+						<th width="270">产品</th>
 						<th width="80">单价</th>
 						<th width="80">税率</th>
 						<th width="110">数量</th>
@@ -139,19 +139,22 @@
 						<td class="text-center text-num" width="50">
 							<span ng-bind="::item.number"></span>
 						</td>
-						<td width="200">
+						<td width="270" class="product">
 							<div class="text-num text-overflow" title="{{::item.product.code}}">
 								<span ng-bind="::item.product.code"></span>
 							</div>
 							<div class="text-overflow" title="{{::item.product.title}}">
-								<span ng-bind="::item.product.title"></span>
+								<span ng-bind="::item.product.title"></span> </div>
 							<div class="text-muted text-over" ng-bind="::item.product.spec" title="{{::item.product.spec}}"></div>
-							<div class="text-muted text-bold text-overflow" ng-if="item.vendspec" title="item.vendspec"><span ng-bind="::item.vendspec"></span></div>
+							<div class="text-bole text-inverse text-flow" ng-if="item.prodOldCode" ><b>旧料编号:</b><span ng-bind="::item.prodOldCode"></span></div>
+							<div class="text-bold text-inverse text-flow" ng-if="item.prodOldTitle" ><b>旧料名称:</b><span ng-bind="::item.prodOldTitle"></span></div>
+							<div class="text-bold text-inverse text-flow" ng-if="item.prodOldSpec" ><b>旧料规格:</b><span ng-bind="::item.prodOldSpec"></span></div>
+							<div class="text-bold text-inverse text-flow" ng-if="item.vendspec" title="item.vendspec"><span ng-bind="::item.vendspec"></span></div>
 							<div class="text-bold text-inverse text-flow" ng-if="item.factory" title="{{item.factory}}"><b>送货工厂:</b><span ng-bind="::item.factory"></span></div>
-							<div class="text-bold text-inverse text-flow" ng-if="item.custPurchaseCode"><b>客户采购单号:</b><br><span ng-bind="::item.custPurchaseCode"></span></div>
-							<div class="text-bold text-inverse text-flow" ng-if="item.acceptCustName"><b>收货客户:</b><br>
+							<div class="text-bold text-inverse text-flow" ng-if="item.custPurchaseCode"><b>客户采购单号:</b><span ng-bind="::item.custPurchaseCode"></span></div>
+							<div class="text-bold text-inverse text-flow" ng-if="item.acceptCustName"><b>收货客户:</b>
 								<span ng-bind="::item.acceptCustName"></span></div>
-							<div class="text-bold text-inverse text-flow" ng-if="item.acceptCustAddress"><b>客户收货地址:</b><br>
+							<div class="text-bold text-inverse text-flow" ng-if="item.acceptCustAddress"><b>客户收货地址:</b>
 								<span ng-bind="::item.acceptCustAddress"></span></div>
 							<div class="text-bold text-inverse text-flow" ng-if="item.remark" title="{{item.remark}}"><b>备注:</b><span ng-bind="::item.remark"></span></div>
 							<div ng-repeat="att in item.attachs" class="text-bold text-bold text-overflow">