Commit d855c9e70df942198f508a65a3260bd7d7edc6a0
1 parent
fccce1fb
出库单合并功能完成,入库单,出库单页面单据状态高亮显示
Signed-off-by: TanYibin <5491541@qq.com>
Showing
10 changed files
with
137 additions
and
30 deletions
ant-design-vue-jeecg/src/views/system/receipt/ReceiptContainerHeaderList.vue
... | ... | @@ -346,8 +346,8 @@ export default { |
346 | 346 | this.$refs.modalForm4.title = "选择容器状态"; |
347 | 347 | }, |
348 | 348 | createBatchTask() { |
349 | - if (this.selectedRowKeys.length <= 1) { | |
350 | - this.$message.warning('请选择两条记录!') | |
349 | + if (this.selectedRowKeys.length <= 0) { | |
350 | + this.$message.warning('至少选择一条记录!') | |
351 | 351 | return |
352 | 352 | } |
353 | 353 | var receiptContainerHeaderList = [] |
... | ... | @@ -362,7 +362,7 @@ export default { |
362 | 362 | } |
363 | 363 | } |
364 | 364 | } |
365 | - if (receiptContainerHeaderList.length > 1) { | |
365 | + if (receiptContainerHeaderList.length > 0) { | |
366 | 366 | if (receiptContainerHeader.taskType == 100) { |
367 | 367 | createReceiptBatchTask(receiptContainerHeaderList).then(res => { |
368 | 368 | this.loading = false |
... | ... | @@ -378,7 +378,7 @@ export default { |
378 | 378 | this.$refs.modalForm2.title = '选择出库口' |
379 | 379 | } |
380 | 380 | } else { |
381 | - this.$message.error("请选择两条符合条件的记录!") | |
381 | + this.$message.error("没有符合生成条件的记录!") | |
382 | 382 | } |
383 | 383 | }, |
384 | 384 | cancelBatchTask() { |
... | ... | @@ -387,7 +387,7 @@ export default { |
387 | 387 | return |
388 | 388 | } |
389 | 389 | if (this.selectedRowKeys.length <= 0) { |
390 | - this.$message.warning('请选择一条记录!'); | |
390 | + this.$message.warning('至少选择一条记录!'); | |
391 | 391 | return; |
392 | 392 | } |
393 | 393 | var ids = ""; |
... | ... |
ant-design-vue-jeecg/src/views/system/receipt/ReceiptDetailList.vue
... | ... | @@ -49,8 +49,14 @@ |
49 | 49 | :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}" |
50 | 50 | @change="handleTableChange"> |
51 | 51 | |
52 | + <span slot="status_dictText" slot-scope="status_dictText"> | |
53 | + <a-tag :key="status_dictText" :color="getStatusColor(status_dictText)"> | |
54 | + {{ status_dictText }} | |
55 | + </a-tag> | |
56 | + </span> | |
57 | + | |
52 | 58 | <span slot="inventoryStatus_dictText" slot-scope="inventoryStatus_dictText"> |
53 | - <a-tag :key="inventoryStatus_dictText" :color="getStatusColor(inventoryStatus_dictText)"> | |
59 | + <a-tag :key="inventoryStatus_dictText" :color="getInventoryStatusColor(inventoryStatus_dictText)"> | |
54 | 60 | {{ inventoryStatus_dictText }} |
55 | 61 | </a-tag> |
56 | 62 | </span> |
... | ... | @@ -178,6 +184,7 @@ export default { |
178 | 184 | title: '单据状态', |
179 | 185 | align: "center", |
180 | 186 | dataIndex: 'status_dictText', |
187 | + scopedSlots: {customRender: 'status_dictText'} | |
181 | 188 | }, |
182 | 189 | { |
183 | 190 | title: '创建人', |
... | ... | @@ -231,6 +238,19 @@ export default { |
231 | 238 | methods: { |
232 | 239 | getStatusColor(status) { |
233 | 240 | const colors = { |
241 | + '新建': 'green', | |
242 | + '收货': 'Skyblue', | |
243 | + '等待上架': 'blue', | |
244 | + '上架': 'darkorange', | |
245 | + '过账': 'purple', | |
246 | + '回传': 'grey', | |
247 | + '回传失败': 'red', | |
248 | + default: 'blue' | |
249 | + }; | |
250 | + return colors[status] || colors.default; | |
251 | + }, | |
252 | + getInventoryStatusColor(status) { | |
253 | + const colors = { | |
234 | 254 | '良品': 'green', |
235 | 255 | '报废品': 'purple', |
236 | 256 | '待确认 ': 'grey', |
... | ... |
ant-design-vue-jeecg/src/views/system/receipt/ReceiptHeaderList.vue
... | ... | @@ -187,10 +187,10 @@ |
187 | 187 | <a-menu-item v-if="record.firstStatus > 0 && record.firstStatus <= 20 && flowOff=='1'"> |
188 | 188 | <a @click="openProcess(record)" type="primary">审核进度</a> |
189 | 189 | </a-menu-item> |
190 | - <a-menu-item v-has="'receiptHeader:edit'"> | |
190 | + <a-menu-item v-has="'receiptHeader:edit'" v-if="record.firstStatus == 0 && record.lastStatus == 0 && record.referCode == null"> | |
191 | 191 | <a @click="handleEdit(record)">编辑</a> |
192 | 192 | </a-menu-item> |
193 | - <a-menu-item v-has="'receiptHeader:delete'"> | |
193 | + <a-menu-item v-has="'receiptHeader:delete'" v-if="record.firstStatus == 0 && record.lastStatus == 0 && record.referCode == null"> | |
194 | 194 | <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)"> |
195 | 195 | <a>删除</a> |
196 | 196 | </a-popconfirm> |
... | ... |
ant-design-vue-jeecg/src/views/system/shipment/ShipmentContainerHeaderList.vue
... | ... | @@ -297,8 +297,8 @@ export default { |
297 | 297 | this.$refs.modalForm2.title = "选择出库口"; |
298 | 298 | }, |
299 | 299 | createBatchTask() { |
300 | - if (this.selectedRowKeys.length <= 1) { | |
301 | - this.$message.warning('请选择两条记录!') | |
300 | + if (this.selectedRowKeys.length <= 0) { | |
301 | + this.$message.warning('至少选择一条记录!') | |
302 | 302 | return |
303 | 303 | } |
304 | 304 | var shipmentContainerHeaderList = [] |
... | ... | @@ -317,7 +317,7 @@ export default { |
317 | 317 | this.$refs.modalForm2.batchEdit(shipmentContainerHeaderList) |
318 | 318 | this.$refs.modalForm2.title = '选择出库口' |
319 | 319 | } else { |
320 | - this.$message.error("请选择两条符合条件的记录!") | |
320 | + this.$message.error("没有符合生成条件的记录!") | |
321 | 321 | } |
322 | 322 | }, |
323 | 323 | cancelBatchTask() { |
... | ... | @@ -326,7 +326,7 @@ export default { |
326 | 326 | return |
327 | 327 | } |
328 | 328 | if (this.selectedRowKeys.length <= 0) { |
329 | - this.$message.warning('请选择一条记录!') | |
329 | + this.$message.warning('至少选择一条记录!') | |
330 | 330 | return |
331 | 331 | } |
332 | 332 | var ids = '' |
... | ... |
ant-design-vue-jeecg/src/views/system/shipment/ShipmentDetailList.vue
... | ... | @@ -48,8 +48,14 @@ |
48 | 48 | :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}" |
49 | 49 | @change="handleTableChange"> |
50 | 50 | |
51 | + <span slot="status_dictText" slot-scope="status_dictText"> | |
52 | + <a-tag :key="status_dictText" :color="getStatusColor(status_dictText)"> | |
53 | + {{ status_dictText }} | |
54 | + </a-tag> | |
55 | + </span> | |
56 | + | |
51 | 57 | <span slot="inventoryStatus_dictText" slot-scope="inventoryStatus_dictText"> |
52 | - <a-tag :key="inventoryStatus_dictText" :color="getStatusColor(inventoryStatus_dictText)"> | |
58 | + <a-tag :key="inventoryStatus_dictText" :color="getInventoryStatusColor(inventoryStatus_dictText)"> | |
53 | 59 | {{ inventoryStatus_dictText }} |
54 | 60 | </a-tag> |
55 | 61 | </span> |
... | ... | @@ -218,6 +224,7 @@ export default { |
218 | 224 | title: '单据状态', |
219 | 225 | align: "center", |
220 | 226 | dataIndex: 'status_dictText', |
227 | + scopedSlots: {customRender: 'status_dictText'} | |
221 | 228 | }, |
222 | 229 | { |
223 | 230 | title: '创建人', |
... | ... | @@ -272,6 +279,19 @@ export default { |
272 | 279 | methods: { |
273 | 280 | getStatusColor(status) { |
274 | 281 | const colors = { |
282 | + '新建': 'green', | |
283 | + '出库组盘': 'Skyblue', | |
284 | + '等待下架': 'blue', | |
285 | + '下架': 'darkorange', | |
286 | + '过账': 'purple', | |
287 | + '回传': 'grey', | |
288 | + '回传失败': 'red', | |
289 | + default: 'blue' | |
290 | + }; | |
291 | + return colors[status] || colors.default; | |
292 | + }, | |
293 | + getInventoryStatusColor(status) { | |
294 | + const colors = { | |
275 | 295 | '良品': 'green', |
276 | 296 | '报废品': 'purple', |
277 | 297 | '待确认 ': 'grey', |
... | ... |
ant-design-vue-jeecg/src/views/system/shipment/ShipmentHeaderList.vue
... | ... | @@ -202,10 +202,10 @@ |
202 | 202 | <a-menu-item v-if="record.firstStatus > 0 && record.firstStatus <= 20 && flowOff=='1'"> |
203 | 203 | <a @click="openProcess(record)" type="primary">审核进度</a> |
204 | 204 | </a-menu-item> |
205 | - <a-menu-item v-has="'shipmentHeader:edit'"> | |
205 | + <a-menu-item v-has="'shipmentHeader:edit'" v-if="record.firstStatus == 0 && record.lastStatus == 0 && record.referCode == null"> | |
206 | 206 | <a @click="handleEdit(record)">编辑</a> |
207 | 207 | </a-menu-item> |
208 | - <a-menu-item v-has="'shipmentHeader:delete'"> | |
208 | + <a-menu-item v-has="'shipmentHeader:delete'" v-if="record.firstStatus == 0 && record.lastStatus == 0 && record.referCode == null"> | |
209 | 209 | <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)"> |
210 | 210 | <a>删除</a> |
211 | 211 | </a-popconfirm> |
... | ... | @@ -402,7 +402,7 @@ export default { |
402 | 402 | methods: { |
403 | 403 | mergeShipment() { |
404 | 404 | if (this.selectedRowKeys.length <= 1) { |
405 | - this.$message.warning('请选择两条记录!') | |
405 | + this.$message.warning('至少选择两条记录!') | |
406 | 406 | return |
407 | 407 | } |
408 | 408 | var shipmentHeaderList = [] |
... | ... | @@ -422,7 +422,7 @@ export default { |
422 | 422 | } |
423 | 423 | }) |
424 | 424 | } else { |
425 | - this.$message.error("请选择两条符合条件的记录!") | |
425 | + this.$message.error("至少选择两条符合条件的记录!") | |
426 | 426 | } |
427 | 427 | }, |
428 | 428 | getDocumentAduitFlowStaus(){ |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/entity/ShipmentDetail.java
... | ... | @@ -40,6 +40,10 @@ public class ShipmentDetail implements Serializable { |
40 | 40 | @Excel(name = "出库单编码", width = 15) |
41 | 41 | @ApiModelProperty(value = "出库单编码") |
42 | 42 | private String shipmentCode; |
43 | + /** 合并出库单编码 */ | |
44 | + @Excel(name = "合并出库单编码", width = 15) | |
45 | + @ApiModelProperty(value = "合并出库单编码") | |
46 | + private String mergeShipmentCode; | |
43 | 47 | /** 仓库编码 */ |
44 | 48 | @Excel(name = "仓库编码", width = 15) |
45 | 49 | @ApiModelProperty(value = "仓库编码") |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/entity/ShipmentHeader.java
... | ... | @@ -34,6 +34,10 @@ public class ShipmentHeader implements Serializable { |
34 | 34 | @Excel(name = "出库单编码", width = 15) |
35 | 35 | @ApiModelProperty(value = "出库单编码") |
36 | 36 | private String code; |
37 | + /** 合并出库单编码 */ | |
38 | + @Excel(name = "合并出库单编码", width = 15) | |
39 | + @ApiModelProperty(value = "合并出库单编码") | |
40 | + private String mergeShipmentCode; | |
37 | 41 | /** 仓库编码 */ |
38 | 42 | @Excel(name = "仓库编码", width = 15) |
39 | 43 | @ApiModelProperty(value = "仓库编码") |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/service/impl/ShipmentHeaderServiceImpl.java
... | ... | @@ -32,8 +32,10 @@ import org.jeecg.utils.constant.QuantityConstant; |
32 | 32 | import org.springframework.beans.factory.annotation.Autowired; |
33 | 33 | import org.springframework.stereotype.Service; |
34 | 34 | import org.springframework.transaction.annotation.Transactional; |
35 | +import org.springframework.util.CollectionUtils; | |
35 | 36 | |
36 | 37 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
38 | +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; | |
37 | 39 | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
38 | 40 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
39 | 41 | |
... | ... | @@ -126,12 +128,12 @@ public class ShipmentHeaderServiceImpl extends ServiceImpl<ShipmentHeaderMapper, |
126 | 128 | if (StringUtils.isNotEmpty(referCode)) { |
127 | 129 | ShipmentHeader referShipmentHeader = getShipmentHeaderByReferCode(referCode, warehouseCode); |
128 | 130 | if (referShipmentHeader != null) { |
129 | - return Result.error("上游单号" + referCode + ",已经存在"); | |
131 | + return Result.error("上游单号:" + referCode + ",已经存在"); | |
130 | 132 | } |
131 | 133 | } |
132 | 134 | String code = createCode(shipmentHeader.getType()); |
133 | 135 | if (StringUtils.isEmpty(code)) { |
134 | - throw new JeecgBootException("根据出库单类型" + shipmentHeader.getType() + "生成单号失败"); | |
136 | + throw new JeecgBootException("根据出库单类型:" + shipmentHeader.getType() + ",生成单号失败"); | |
135 | 137 | } |
136 | 138 | shipmentHeader.setCode(code); |
137 | 139 | shipmentHeader.setFirstStatus(QuantityConstant.RECEIPT_HEADER_BUILD); |
... | ... | @@ -150,8 +152,8 @@ public class ShipmentHeaderServiceImpl extends ServiceImpl<ShipmentHeaderMapper, |
150 | 152 | Date now = new Date(); |
151 | 153 | SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd"); |
152 | 154 | LambdaQueryWrapper<ShipmentHeader> shipmentHeaderLambdaQueryWrapper = Wrappers.lambdaQuery(); |
153 | - shipmentHeaderLambdaQueryWrapper.eq(ShipmentHeader::getType, shipmentType).select(ShipmentHeader::getCode).orderByDesc(ShipmentHeader::getId) | |
154 | - .last("Limit 1"); | |
155 | + shipmentHeaderLambdaQueryWrapper.eq(ShipmentHeader::getType, shipmentType).likeRight(ShipmentHeader::getCode, shipmentType).select(ShipmentHeader::getCode) | |
156 | + .orderByDesc(ShipmentHeader::getId).last("Limit 1"); | |
155 | 157 | String maxCode = null; |
156 | 158 | ShipmentHeader shipmentHeader = this.getOne(shipmentHeaderLambdaQueryWrapper); |
157 | 159 | if (shipmentHeader != null) { |
... | ... | @@ -258,23 +260,77 @@ public class ShipmentHeaderServiceImpl extends ServiceImpl<ShipmentHeaderMapper, |
258 | 260 | } |
259 | 261 | |
260 | 262 | @Override |
263 | + @Transactional | |
261 | 264 | public Result<Object> mergeShipment(List<ShipmentHeader> shipmentHeaderList) { |
265 | + if (CollectionUtils.isEmpty(shipmentHeaderList)) { | |
266 | + return Result.error("至少选择两条记录!"); | |
267 | + } | |
268 | + // 查询出库单头信息 | |
262 | 269 | LambdaQueryWrapper<ShipmentHeader> shipmentHeaderLambdaQueryWrapper = Wrappers.lambdaQuery(); |
263 | 270 | shipmentHeaderLambdaQueryWrapper.in(ShipmentHeader::getCode, shipmentHeaderList.stream().map(ShipmentHeader::getCode).collect(Collectors.toList())); |
264 | - List<ShipmentHeader> mergeShipmentList = shipmentHeaderService.list(shipmentHeaderLambdaQueryWrapper); | |
265 | - if (shipmentHeaderList.size() != mergeShipmentList.size()) { | |
266 | - return Result.error("未知错误"); | |
271 | + List<ShipmentHeader> mergeShipmentHeaderList = shipmentHeaderService.list(shipmentHeaderLambdaQueryWrapper); | |
272 | + if (shipmentHeaderList.size() != mergeShipmentHeaderList.size()) { | |
273 | + return Result.error("未知错误!"); | |
274 | + } | |
275 | + if (mergeShipmentHeaderList.size() < 2) { | |
276 | + return Result.error("至少选择两条有效记录!"); | |
267 | 277 | } |
268 | - if (mergeShipmentList.stream().map(ShipmentHeader::getCompanyCode).distinct().count() > 1) { | |
269 | - return Result.error("货主信息不一致"); | |
278 | + if (mergeShipmentHeaderList.stream().map(ShipmentHeader::getWarehouseCode).distinct().count() > 1) { | |
279 | + return Result.error("仓库信息不一致!"); | |
270 | 280 | } |
271 | - if (mergeShipmentList.stream().map(ShipmentHeader::getType).distinct().count() > 1) { | |
272 | - return Result.error("出库单类型信息不一致"); | |
281 | + if (mergeShipmentHeaderList.stream().map(ShipmentHeader::getCompanyCode).distinct().count() > 1) { | |
282 | + return Result.error("货主信息不一致!"); | |
273 | 283 | } |
274 | - if (mergeShipmentList.stream().map(ShipmentHeader::getCustomerCode).distinct().count() > 1) { | |
275 | - return Result.error("客户信息不一致"); | |
284 | + if (mergeShipmentHeaderList.stream().map(ShipmentHeader::getType).distinct().count() > 1) { | |
285 | + return Result.error("出库单类型信息不一致!"); | |
276 | 286 | } |
287 | + if (mergeShipmentHeaderList.stream().map(ShipmentHeader::getCustomerCode).distinct().count() > 1) { | |
288 | + return Result.error("客户信息不一致!"); | |
289 | + } | |
290 | + // 查询出库单详情 | |
291 | + LambdaQueryWrapper<ShipmentDetail> shipmentDetailLambdaQueryWrapper = Wrappers.lambdaQuery(); | |
292 | + shipmentDetailLambdaQueryWrapper.in(ShipmentDetail::getShipmentCode, shipmentHeaderList.stream().map(ShipmentHeader::getCode).collect(Collectors.toList())); | |
293 | + List<ShipmentDetail> mergeshipmentDetailList = shipmentDetailService.list(shipmentDetailLambdaQueryWrapper); | |
277 | 294 | |
295 | + ShipmentHeader mergeShipmentHeader = new ShipmentHeader(); | |
296 | + mergeShipmentHeader.setCode(this.createCode(mergeShipmentHeaderList.get(0).getType())); | |
297 | + mergeShipmentHeader.setWarehouseCode(mergeShipmentHeaderList.get(0).getWarehouseCode()); | |
298 | + mergeShipmentHeader.setType(mergeShipmentHeaderList.get(0).getType()); | |
299 | + mergeShipmentHeader.setCompanyCode(mergeShipmentHeaderList.get(0).getCompanyCode()); | |
300 | + mergeShipmentHeader.setCustomerCode(mergeShipmentHeaderList.get(0).getCustomerCode()); | |
301 | + mergeShipmentHeader.setFirstStatus(QuantityConstant.SHIPMENT_HEADER_BUILD); | |
302 | + mergeShipmentHeader.setLastStatus(QuantityConstant.SHIPMENT_HEADER_BUILD); | |
303 | + mergeShipmentHeader.setTotalQty(mergeshipmentDetailList.stream().map(ShipmentDetail::getQty).reduce(BigDecimal.ZERO, BigDecimal::add)); | |
304 | + mergeShipmentHeader.setTotalLines(mergeshipmentDetailList.size()); | |
305 | + mergeShipmentHeader.setRemark("合并单据"); | |
306 | + if (!save(mergeShipmentHeader)) { | |
307 | + throw new JeecgBootException("新增合并出库单主表失败"); | |
308 | + } | |
309 | + mergeshipmentDetailList.stream().forEach(t -> { | |
310 | + t.setId(null); | |
311 | + t.setShipmentId(mergeShipmentHeader.getId()); | |
312 | + t.setShipmentCode(mergeShipmentHeader.getCode()); | |
313 | + }); | |
314 | + if (!shipmentDetailService.saveBatch(mergeshipmentDetailList)) { | |
315 | + throw new JeecgBootException("新增合并出库单详情失败"); | |
316 | + } | |
317 | + // 更新原单据头信息为已合并,关联合并出库单号 | |
318 | + LambdaUpdateWrapper<ShipmentHeader> shipmentHeaderLambdaUpdateWrapper = Wrappers.lambdaUpdate(); | |
319 | + shipmentHeaderLambdaUpdateWrapper.in(ShipmentHeader::getCode, shipmentHeaderList.stream().map(ShipmentHeader::getCode).collect(Collectors.toList())); | |
320 | + shipmentHeaderLambdaUpdateWrapper.set(ShipmentHeader::getFirstStatus, QuantityConstant.SHIPMENT_HEADER_MERGED) | |
321 | + .set(ShipmentHeader::getLastStatus, QuantityConstant.SHIPMENT_HEADER_MERGED).set(ShipmentHeader::getMergeShipmentCode, mergeShipmentHeader.getCode()); | |
322 | + if (!shipmentHeaderService.update(shipmentHeaderLambdaUpdateWrapper)) { | |
323 | + throw new JeecgBootException("更新出库单主表失败"); | |
324 | + } | |
325 | + | |
326 | + // 更新原单据详情信息为已合并,关联合并出库单号 | |
327 | + LambdaUpdateWrapper<ShipmentDetail> shipmentDetailLambdaUpdateWrapper = Wrappers.lambdaUpdate(); | |
328 | + shipmentDetailLambdaUpdateWrapper.in(ShipmentDetail::getShipmentCode, shipmentHeaderList.stream().map(ShipmentHeader::getCode).collect(Collectors.toList())); | |
329 | + shipmentDetailLambdaUpdateWrapper.set(ShipmentDetail::getStatus, QuantityConstant.SHIPMENT_HEADER_MERGED).set(ShipmentDetail::getMergeShipmentCode, | |
330 | + mergeShipmentHeader.getCode()); | |
331 | + if (!shipmentDetailService.update(shipmentDetailLambdaUpdateWrapper)) { | |
332 | + throw new JeecgBootException("更新出库单主表失败"); | |
333 | + } | |
278 | 334 | return Result.OK("合并成功"); |
279 | 335 | } |
280 | 336 | } |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/utils/constant/QuantityConstant.java
... | ... | @@ -108,6 +108,9 @@ public class QuantityConstant { |
108 | 108 | |
109 | 109 | // 过账 |
110 | 110 | public static final Integer SHIPMENT_HEADER_COMPLETED = 800; |
111 | + | |
112 | + // 已合并 | |
113 | + public static final Integer SHIPMENT_HEADER_MERGED = 810; | |
111 | 114 | |
112 | 115 | // 回传失败 |
113 | 116 | public static final Integer SHIPMENT_HEADER_RETURN_ERROR = 850; |
... | ... |