Bläddra i källkod

ERP单个上架的调整

yujia 8 år sedan
förälder
incheckning
7fa6e50168

+ 1 - 1
src/main/java/com/uas/platform/b2c/prod/commodity/model/ProductDetail.java

@@ -86,7 +86,7 @@ public class ProductDetail implements Serializable{
     private String packaging;
 
     /**
-     * 单价
+     * 销售月单价
      */
     @Column(name = "prd_price")
     private Double price;

+ 69 - 36
src/main/webapp/resources/js/vendor/controllers/forstore/vendor_materialCtrl.js

@@ -1,6 +1,6 @@
 define([ 'app/app', 'jquery-uploadify' ], function(app) {
 	'use strict';
-	app.register.controller('vendor_materialCtrl', ['$scope', '$rootScope', 'Material', 'toaster', 'ComponentActive', 'Enterprise', '$q', 'NumberService', '$location', '$stateParams', 'Search', '$modal', 'ComponentActiveAPI', 'BrandSubmit', 'BrandActiveAPI', 'DistributionRule', 'prodRepositoryService', 'AuthenticationService', 'StoreInfo', 'ProductServiceQuery', 'StoreCms', 'ByteCountService', 'Goods', 'UASBatchPutOnPropertyServices', function ($scope, $rootScope, Material, toaster, ComponentActive, Enterprise, $q, NumberService, $location, $stateParams, Search, $modal, ComponentActiveAPI, BrandSubmit, BrandActiveAPI, DistributionRule, prodRepositoryService, AuthenticationService, StoreInfo, ProductServiceQuery, StoreCms, ByteCountService, Goods, UASBatchPutOnPropertyServices) {
+	app.register.controller('vendor_materialCtrl', ['$scope', '$rootScope', 'Material', 'toaster', 'ComponentActive', 'Enterprise', '$q', 'NumberService', '$location', '$stateParams', 'Search', '$modal', 'ComponentActiveAPI', 'BrandSubmit', 'BrandActiveAPI', 'DistributionRule', 'prodRepositoryService', 'AuthenticationService', 'StoreInfo', 'ProductServiceQuery', 'StoreCms', 'ByteCountService', 'Goods', 'UASBatchPutOnPropertyServices', '$filter', function ($scope, $rootScope, Material, toaster, ComponentActive, Enterprise, $q, NumberService, $location, $stateParams, Search, $modal, ComponentActiveAPI, BrandSubmit, BrandActiveAPI, DistributionRule, prodRepositoryService, AuthenticationService, StoreInfo, ProductServiceQuery, StoreCms, ByteCountService, Goods, UASBatchPutOnPropertyServices, $filter) {
 		$rootScope.active = 'vendor_material';
 		document.title = '卖家产品库-优软商城';
 		$scope.tab = 'material';
@@ -500,6 +500,21 @@ define([ 'app/app', 'jquery-uploadify' ], function(app) {
 					}
 					material.exPandOper = false;
 					material.addGoodsOper = false;
+				});
+				$scope.goods.editReserve = material.erpReserve;
+				if ('ERP' == material.sourceApp) {
+					angular.forEach(material.goodsArr, function (goods) {
+						if (goods.status != 612) {
+							$scope.goods.editReserve = $scope.goods.editReserve - goods.reserve;
+						}
+					});
+					$scope.goods.editReserve = $scope.goods.editReserve < 0 ? 0 : $scope.goods.editReserve;
+					$scope.goods.maxReserve = $scope.goods.editReserve;
+					$scope.goods.sourceApp = 'ERP';
+				}
+
+				angular.forEach(material.goodsArr, function (goods) {
+
 				});
 				material.exPandOper = true;
 				material.selected = true;
@@ -1699,22 +1714,30 @@ define([ 'app/app', 'jquery-uploadify' ], function(app) {
 		 */
 		var getProductDetail = function (product) {
 			Material.getProductDetail({id : product.id}, function (data) {
-				// $scope.goods.erpReserve = typeof data.reserve == 'undefined' ? 0 : data.reserve;
-				// $scope.goods.b2cReserve = typeof data.b2cReserve == 'undefined' ? 0 : data.b2cReserve;
-				// $scope.goods.packaging = data.packaging;
-				// $scope.goods.produceDate = data.produceDate;
-				// $scope.goods.minPackQty = data.minPackQty;
-				// $scope.goods.breakUp = data.breakUp;
-				// $scope.goods.minBuyQty = data.minBuyQty;
-				// $scope.goods.minDelivery = data.minDelivery;
-				// $scope.goods.maxDelivery = data.maxDelivery;
-				// $scope.goods.prices = [];
-				// product.selected = true;
-				// if ('MAINLAND' == $scope.store.enType)
-				// 	$scope.goods.prices.push({start : $scope.minReserve, end : $scope.maxReserve, rMBPrice: data.price});
-				// if ('HK' == $scope.store.enType)
-				// 	$scope.goods.prices.push({start : $scope.minReserve, end : $scope.maxReserve, uSDPrice: data.price});
-
+				$scope.goods.erpReserve = typeof data.reserve == 'undefined' ? 0 : data.reserve;
+				$scope.goods.editPackaging = (data && data.packaging) || product.packaging || '无';
+				$scope.goods.editProduceDate = (data && data.produceDate) || product.produceDate;
+				$scope.goods.editMinPackQty = (data && data.minPackQty) || product.minPackQty || $scope.goods.minBuyQty || 1;
+				$scope.goods.editMinBuyQty = (data && data.minBuyQty) || $scope.goods.minPackQty;
+				$scope.goods.editMinBuyQty = $scope.goods.editMinBuyQty - ($scope.goods.editMinBuyQty % $scope.goods.editMinPackQty);
+				if ($scope.goods.editMinBuyQty < $scope.goods.editMinPackQty) {
+					$scope.goods.editMinBuyQty = $scope.goods.editMinPackQty;
+				}
+				$scope.goods.editMinDelivery = (data && data.minDelivery) || $scope.uasBatchPutOnProperty.minDelivery;
+				$scope.goods.editMaxDelivery = (data && data.maxDelivery) || $scope.uasBatchPutOnProperty.maxDelivery;
+				product.selected = true;
+				product.averMonthSalePrice = (data && data.price) ? data.price : 0;
+				var goodQtyPrice = {start: $scope.goods.editMinBuyQty, end: $scope.maxReserve};
+				var price = (((data && data.price) ? data.price : 0) *
+				($scope.uasBatchPutOnProperty.fluctuateRate ? $scope.uasBatchPutOnProperty.fluctuateRate : 1));
+				if ('MAINLAND' == $scope.store.enType) {
+					goodQtyPrice.rMBPrice = $filter('formateNumber')(price, 6);
+				}
+				if ('HK' == $scope.store.enType) {
+					goodQtyPrice.uSDPrice = $filter('formateNumber')(price, 6);
+				}
+				$scope.goods.editPrices = [];
+				$scope.goods.editPrices.push(goodQtyPrice);
 			});
 		}
 
@@ -1766,25 +1789,28 @@ define([ 'app/app', 'jquery-uploadify' ], function(app) {
 			});
 			material.addGoodsOper = true;
 			material.exPandOper = true;
+			$scope.goods = {};
+			$scope.goods.editBreakUp = false;
+			// 先保存产品id,方便去获取tag是否重复
+			$scope.goods.productid = material.id;
+			$scope.goods.prodNum = material.prodNum;
+			$scope.goods.editPrices = [];
+			if ($scope.store.enType === 'HK') {
+				$scope.goods.currencyName = 'USD';
+			} else {
+				$scope.goods.currencyName = 'RMB';
+			}
+			$scope.goods.editSelfSale = $scope.$$nonProduct.canSelfSale ? 1 : 2;
 			$scope.expandGoods(material, material.addGoodsOper);
-			// if ('ERP' == material.sourceApp) {// 如果是erp上传物料获取物料交易信息
-			// 	getProductDetail(material);
-			// } else {
-				$scope.goods = { editBreakUp: false, editSelfSale: 2};
-				if($scope.store.enType === 'HK') {
-					$scope.goods.currencyName = 'USD';
-				}else {
-					$scope.goods.currencyName = 'RMB';
-				}
-				// 先保存产品id,方便去获取tag是否重复
-				$scope.goods.productid = material.id;
-				$scope.goods.prodNum = material.prodNum;
-				$scope.goods.editPrices = [];
-				$scope.goods.editSelfSale = $scope.$$nonProduct.canSelfSale ? 1 : 2;
-				$scope.goods.editPrices.push({start : $scope.minReserve, end : $scope.maxReserve});
+			if ('ERP' == material.sourceApp) {
+				// 如果是erp上传物料获取物料交易信息
+				getProductDetail(material);
+			} else {
+				$scope.goods.editPrices.push({start: $scope.minReserve, end: $scope.maxReserve});
 				// $scope.goods.isSelfSupport = $scope.store.status == 'OPENED' ? 1 : 0;
 				material.selected = true;
-			// }
+				// }
+			}
 		}
 
 		/**
@@ -1918,6 +1944,13 @@ define([ 'app/app', 'jquery-uploadify' ], function(app) {
 				}
                 return false;
             }
+            if (goods.sourceApp == 'ERP') {
+				if (Number(goods.maxReserve) < goods.editReserve) {
+					goods.editReserve = goods.maxReserve;
+					toaster.pop('warning', '提示', '不能超过可用库存');
+				}
+				return false;
+			}
             goods.editReservePre = goods.editReserve;
             goods.editReserveInvalid = false;
 			if (!goods.breakUp) {
@@ -2119,14 +2152,14 @@ define([ 'app/app', 'jquery-uploadify' ], function(app) {
 				toaster.pop('warning', '提示', '单价必须是大于0的数字');
 				return;
 			}
-			if(price.indexOf('.') > -1) {
-				var arr = price.split(".");
+			if(price.toString().indexOf('.') > -1) {
+				var arr = price.toString().split(".");
 				if(arr[0].length > 4 || arr[1].length > 6) {
 					prices[index].priceInvalid = true;
 					return ;
 				}
 			}else {
-				if(price.toString().length > 4) {
+				if(price.toString().toString().length > 4) {
 					prices[index].priceInvalid = true;
 					return ;
 				}

+ 8 - 8
src/main/webapp/resources/view/vendor/forstore/erp/vendor_material_erp.html

@@ -1724,7 +1724,7 @@
 													<div class="labelling">
 														<!--<em>*</em>-->
 														自定义标签 : <input maxlength="20" type="text" ng-model="goods.editTag" ng-blur="blurTag(goods)" ng-change="changeTag(goods)" placeholder="请设置产品标签"></div>
-													<span>近一个月的销售平均价:10</span>
+													<span>近一个月的销售平均价:<em ng-bind="material.averMonthSalePrice |  formateNumber : 6"></em></span>
 												</td>
 											</tr>
 											<tr class="edit-content edits" >
@@ -1745,7 +1745,7 @@
 																								   ng-class="{'error' : goods.editPackagingInvalid}" ng-blur="editPackaging(goods, true)" ng-change="changePackaging(goods)"/>
 															</div>
 															<div class="input-list">
-																<span class="tit">生产日期:</span><input type="text" class="form-control" name="produceDate" ng-maxlength="11" title="生产日期" maxlength="11" placeholder="生产日期" style="width: 96px;" ng-model="goods.editProduceDate" ng-init="goods.editProduceDate = material.productDetail.produceDate"
+																<span class="tit">生产日期:</span><input type="text" class="form-control" name="produceDate" ng-maxlength="11" title="生产日期" maxlength="11" placeholder="生产日期" style="width: 96px;" ng-model="goods.editProduceDate"
 																									 ng-class="{'error' : goods.editProduceDateInvalid}"
 																									 ng-change="editProduceDateFa(goods, false)"/>
 															</div>
@@ -1763,10 +1763,10 @@
 															</div>
 															<div class="input-list">
 																<span class="tit">起订量:</span><input type="number" class="wid70 form-control" name="minBuyQty" title="起拍"  placeholder="数量"
-																									maxlength="6" oninput="if(value.length>6)value=value.slice(0,6)" ng-model="goods.editMinBuyQty" ng-init="goods.editMinBuyQty = material.productDetail.minBuyQty;updateStartNumber(goods);" ng-blur="setPriceMinAmount(goods, false)" ng-change="updateStartNumber(goods)" ng-class="{'error' : goods.editMinBuyQtyInValid}"/>
+																									maxlength="6" oninput="if(value.length>6)value=value.slice(0,6)" ng-model="goods.editMinBuyQty" ng-blur="setPriceMinAmount(goods, false)" ng-change="updateStartNumber(goods)" ng-class="{'error' : goods.editMinBuyQtyInValid}"/>
 															</div>
 															<div class="input-list">
-																<span class="tit">包装数量:</span><input type="number" maxlength="6" oninput="if(value.length>6)value=value.slice(0,6)" class="wid70 form-control" name="minPackQty" title="包装数量" placeholder="数量" ng-model="goods.editMinPackQty" ng-init="goods.editMinPackQty= material.productDetail.minPackQty" ng-blur="setPriceMinPackAmount(goods)" ng-class="{'error' : goods.editMinPackQtyInValid}" style="width: 70px;"/>
+																<span class="tit">包装数量:</span><input type="number" maxlength="6" oninput="if(value.length>6)value=value.slice(0,6)" class="wid70 form-control" name="minPackQty" title="包装数量" placeholder="数量" ng-model="goods.editMinPackQty" ng-blur="setPriceMinPackAmount(goods)" ng-class="{'error' : goods.editMinPackQtyInValid}" style="width: 70px;"/>
 															</div>
 														</div>
 														<div class="content">
@@ -1793,7 +1793,7 @@
 															<p class="title height24">单价(¥)</p>
 															<div
 																	class="input-list" ng-repeat="price in goods.editPrices">
-																<input type="number" name="rmb" class="wid92 form-control"  placeholder="单价(¥)" ng-blur="changePrices(goods.editPrices, price.rMBPrice, $index)" ng-class="{'error' : price.priceInvalid}" ng-model="price.rMBPrice" ng-init="price.rMBPrice = material.productDetail.price" oninput="if(value.length>11)value=value.slice(0,11)" autocomplete="off" validata-price/>
+																<input type="number" name="rmb" class="wid92 form-control"  placeholder="单价(¥)" ng-blur="changePrices(goods.editPrices, price.rMBPrice, $index)" ng-class="{'error' : price.priceInvalid}" ng-model="price.rMBPrice" oninput="if(value.length>11)value=value.slice(0,11)" autocomplete="off" validata-price/>
 															</div>
 														</div>
 														<div class="content plusBtn">
@@ -1809,11 +1809,11 @@
 															<div class="input-list">
 																<p>
 											<span><input type="number" class="wid36 form-control" name="minDelivery" title="最小交期" placeholder="天数" oninput="if(value.length>2)value=value.slice(0,2)"
-														 ng-model="goods.editMinDelivery" ng-init="goods.editMinDelivery = material.productDetail.minDelivery"
+														 ng-model="goods.editMinDelivery"
 														 ng-blur="changeDelivery(goods.editMinDelivery, goods.editMaxDelivery, true, goods)"
 														 ng-class="{'error' : goods.editMinDeliveryinValid}"/></span>
 																	<span style="margin-left: 4px;">–</span>
-																	<span><input type="number" class="wid36 form-control" name="maxDelivery" title="最大交期" placeholder="天数" oninput="if(value.length>2)value=value.slice(0,2)" ng-model="goods.editMaxDelivery" ng-init="goods.editMaxDelivery = material.productDetail.maxDelivery" ng-blur="changeDelivery(goods.editMinDelivery, goods.editMaxDelivery, false, goods)"
+																	<span><input type="number" class="wid36 form-control" name="maxDelivery" title="最大交期" placeholder="天数" oninput="if(value.length>2)value=value.slice(0,2)" ng-model="goods.editMaxDelivery" ng-blur="changeDelivery(goods.editMinDelivery, goods.editMaxDelivery, false, goods)"
 																				 ng-class="{'error' : goods.editMaxDeliveryinValid}"/></span>
 																</p>
 															</div>
@@ -1911,7 +1911,7 @@
 													<div class="labelling">
 														<!--<em>*</em>-->
 														自定义标签 : <input maxlength="20" type="text" ng-model="goods.editTag" ng-blur="blurTag(goods)" ng-change="changeTag(goods)" placeholder="请设置产品标签"></div>
-													<span>近一个月的销售平均价:10</span>
+													<span>近一个月的销售平均价:<em ng-bind="material.averMonthSalePrice |  formateNumber : 6"></em></span>
 												</td>
 											</tr>
 											<tr class="edit-content edits" ng-if="goods.edit">

+ 8 - 8
src/main/webapp/resources/view/vendor/forstore/erp/vendor_material_unstandard_erp.html

@@ -1737,7 +1737,7 @@
 													<div class="labelling">
 														<!--<em>*</em>-->
 														自定义标签 : <input maxlength="20" type="text" ng-model="goods.editTag" ng-blur="blurTag(goods)" ng-change="changeTag(goods)" placeholder="请设置产品标签"></div>
-													<span>近一个月的销售平均价:10</span>
+													<span>近一个月的销售平均价:<em ng-bind="material.averMonthSalePrice |  formateNumber : 6"></em></span>
 												</td>
 											</tr>
 											<tr class="edit-content edits" >
@@ -1758,7 +1758,7 @@
 																								   ng-class="{'error' : goods.editPackagingInvalid}" ng-blur="editPackaging(goods, true)" ng-change="changePackaging(goods)"/>
 															</div>
 															<div class="input-list">
-																<span class="tit">生产日期:</span><input type="text" class="form-control" name="produceDate" ng-maxlength="11" title="生产日期" maxlength="11" placeholder="生产日期" style="width: 96px;" ng-model="goods.editProduceDate" ng-init="material.productDetail.produceDate"
+																<span class="tit">生产日期:</span><input type="text" class="form-control" name="produceDate" ng-maxlength="11" title="生产日期" maxlength="11" placeholder="生产日期" style="width: 96px;" ng-model="goods.editProduceDate"
 																									 ng-class="{'error' : goods.editProduceDateInvalid}"
 																									 ng-change="editProduceDateFa(goods, false)"/>
 															</div>
@@ -1776,10 +1776,10 @@
 															</div>
 															<div class="input-list">
 																<span class="tit">起订量:</span><input type="number" class="wid70 form-control" name="minBuyQty" title="起拍"  placeholder="数量"
-																									maxlength="6" oninput="if(value.length>6)value=value.slice(0,6)" ng-model="goods.editMinBuyQty" ng-init="goods.editMinBuyQty = material.productDetail.minBuyQty;updateStartNumber(goods);" ng-blur="setPriceMinAmount(goods, false)" ng-change="updateStartNumber(goods)" ng-class="{'error' : goods.editMinBuyQtyInValid}"/>
+																									maxlength="6" oninput="if(value.length>6)value=value.slice(0,6)" ng-model="goods.editMinBuyQty" ng-blur="setPriceMinAmount(goods, false)" ng-change="updateStartNumber(goods)" ng-class="{'error' : goods.editMinBuyQtyInValid}"/>
 															</div>
 															<div class="input-list">
-																<span class="tit">包装数量:</span><input type="number" maxlength="6" oninput="if(value.length>6)value=value.slice(0,6)" class="wid70 form-control" name="minPackQty" title="包装数量" placeholder="数量" ng-model="goods.editMinPackQty" ng-init="goods.editMinPackQty = material.productDetail.minPackQty" ng-blur="setPriceMinPackAmount(goods)" ng-class="{'error' : goods.editMinPackQtyInValid}" style="width: 70px;"/>
+																<span class="tit">包装数量:</span><input type="number" maxlength="6" oninput="if(value.length>6)value=value.slice(0,6)" class="wid70 form-control" name="minPackQty" title="包装数量" placeholder="数量" ng-model="goods.editMinPackQty" ng-blur="setPriceMinPackAmount(goods)" ng-class="{'error' : goods.editMinPackQtyInValid}" style="width: 70px;"/>
 															</div>
 														</div>
 														<div class="content">
@@ -1806,7 +1806,7 @@
 															<p class="title height24">单价(¥)</p>
 															<div
 																	class="input-list" ng-repeat="price in goods.editPrices">
-																<input type="number" name="rmb" class="wid92 form-control"  placeholder="单价(¥)" ng-blur="changePrices(goods.editPrices, price.rMBPrice, $index)" ng-class="{'error' : price.priceInvalid}" ng-model="price.rMBPrice" ng-init="price.rMBPrice = material.productDetail.price" oninput="if(value.length>11)value=value.slice(0,11)" autocomplete="off" validata-price/>
+																<input type="number" name="rmb" class="wid92 form-control"  placeholder="单价(¥)" ng-blur="changePrices(goods.editPrices, price.rMBPrice, $index)" ng-class="{'error' : price.priceInvalid}" ng-model="price.rMBPrice" oninput="if(value.length>11)value=value.slice(0,11)" autocomplete="off" validata-price/>
 															</div>
 														</div>
 														<div class="content plusBtn">
@@ -1822,11 +1822,11 @@
 															<div class="input-list">
 																<p>
 											<span><input type="number" class="wid36 form-control" name="minDelivery" title="最小交期" placeholder="天数" oninput="if(value.length>2)value=value.slice(0,2)"
-														 ng-model="goods.editMinDelivery" ng-init="goods.editMinDelivery = material.productDetail.minDelivery"
+														 ng-model="goods.editMinDelivery"
 														 ng-blur="changeDelivery(goods.editMinDelivery, goods.editMaxDelivery, true, goods)"
 														 ng-class="{'error' : goods.editMinDeliveryinValid}"/></span>
 																	<span style="margin-left: 4px;">–</span>
-																	<span><input type="number" class="wid36 form-control" name="maxDelivery" title="最大交期" placeholder="天数" oninput="if(value.length>2)value=value.slice(0,2)" ng-model="goods.editMaxDelivery" ng-init="goods.editMaxDelivery = material.productDetail.maxDelivery" ng-blur="changeDelivery(goods.editMinDelivery, goods.editMaxDelivery, false, goods)"
+																	<span><input type="number" class="wid36 form-control" name="maxDelivery" title="最大交期" placeholder="天数" oninput="if(value.length>2)value=value.slice(0,2)" ng-model="goods.editMaxDelivery" ng-blur="changeDelivery(goods.editMinDelivery, goods.editMaxDelivery, false, goods)"
 																				 ng-class="{'error' : goods.editMaxDeliveryinValid}"/></span>
 																</p>
 															</div>
@@ -1924,7 +1924,7 @@
 													<div class="labelling">
 														<!--<em>*</em>-->
 														自定义标签 : <input maxlength="20" type="text" ng-model="goods.editTag" ng-blur="blurTag(goods)" ng-change="changeTag(goods)" placeholder="请设置产品标签"></div>
-													<span>近一个月的销售平均价:10</span>
+													<span>近一个月的销售平均价:<em ng-bind="material.averMonthSalePrice |  formateNumber : 6"></em></span>
 												</td>
 											</tr>
 											<tr class="edit-content edits" ng-if="goods.edit">