|
05.10.2004, 14:46 | #1 |
Участник
|
search item by barcode
How to enter new items by barcode?
Usually in itemID field you select itemnumber from item list. How could be done that from barcode scanner? |
|
14.12.2006, 18:26 | #2 |
Участник
|
Подскажите как организовать такой функционал:
В строках заказа вводится в поле номенклатура штрих-код, по штрих-коду ищется номенклатура и подставляется в строку со всеми аналитиками. Как добится того что бы подставлялась аналитика? Как передать в salesline inventDimId? Вот что получилось, но работает не совсем так, как хотелась бы. X++: boolean validateField(fieldId fieldId) { boolean ok = true; SalesLineType salesLineType; RAssetTable assetTable; //valu FA (Viar) SalesLine salesLineTmp; //valu FA (Viar) InventItemBarcode inventItemBarcode; InventDim inventDim; InventTable inventTable; SalesLine salesLine; ; if(fieldId == fieldnum(SalesLine, ItemId)) { select firstonly InventItemBarcode where InventItemBarcode.itemBarCode == this.ItemId; if(inventItemBarcode) { this.ItemId = inventItemBarcode.itemId; if(inventItemBarcode.inventDimId) { ttsbegin; inventDim.clear(); inventTable.clear(); //inventItemBarcode.clear(); inventTable = InventTable::find(this.ItemId); //inventItemBarcode = InventItemBarcode::findBarcode(inventTable.itemId); inventDim = inventItemBarcode.inventDim(); inventDim.inventLocationId = inventTable.salesInventLocationId(inventDim.inventLocationId); inventDim.configId = inventDim.configId ? inventDim.configId : inventTable.standardConfigId; inventDim.inventSizeId = inventDim.InventSizeId ? inventDim.InventSizeId : inventTable.standardInventSizeId; inventDim.inventColorId = inventDim.InventColorId ? inventDim.InventColorId : inventTable.standardInventColorId; inventDim.InventLocationId = inventDim.InventLocationId; salesLine.inventDimId = InventDim::findOrCreate(inventDim).inventDimId; salesLine.inventDimId = InventDim.inventDimId; salesLine.projCategoryId = inventTable.projCategoryId; salesLine.setTaxItemGroup(inventTable.salesTaxItemGroupId()); salesLine.salesUnit = inventTable.salesUnitId(); salesLine.overDeliveryPct = inventTable.salesOverDeliveryPct(); salesLine.underDeliveryPct = inventTable.salesUnderDeliveryPct(); salesLine.initName(inventTable); salesLine.initFromCustExternalItemDescription(); salesLine.salesQty = InventItemBarcode.Qty; salesLine.qtyOrdered = InventItemBarcode.Qty; salesLine.CurrencyCode = CompanyInfo::standardCurrency(); salesLine.priceUnit = inventTable.salesPriceUnit(); salesLine.lineAmountModified(); salesLine.barCode = inventItemBarcode.itemBarCode; salesLine.barCodeType = inventItemBarcode.barcodeSetupId; salesLine.dimension = Dimensions::findDimension(salesLine, inventTable, inventTable.Dimension); salesLine.setPriceDisc(inventDim); salesLine.calcPackingUnit(inventDim); ttscommit; } } } ok = super(fieldId); if (ok) { salesLineType = this.type(); ok = salesLineType.validateField(fieldId); } // Valu FA (Viar) --> if (ok && fieldId == fieldnum(SalesLine, assetId_ru) && this.assetId_ru) { assetTable = RAssetTable::find(this.assetId_ru); ok = assetTable.isOkToSell(); if (ok) { salesLineTmp = SalesLine::findAsset_RU(this.assetId_ru); if (salesLineTmp && salesLineTmp.recid != this.recId) { ok = checkfailed(strfmt("@FAV1297", salesLineTmp.salesId)); } } } // <<-- Valu FA (Viar) return ok; } |
|
14.12.2006, 19:02 | #3 |
Banned
|
Да уж, длинно и некрасиво.
Вот идеи: salesLine.initFromInventTable(...) InventDim.mergeUsedDim(...) SalesLine::ModifySalesQty(...) А полный пример реализации похожей функциональности можно найти здесь: \Classes\WMSJournalFormTrans\barCodeEAN128 И ради бога, сделайте отдельное поле для ввода штрих-кода. |
|
|
|