SuggestedQuantity field added to pm and wo item parts
This commit is contained in:
2
.vscode/launch.json
vendored
2
.vscode/launch.json
vendored
@@ -55,7 +55,7 @@
|
||||
"AYANOVA_FOLDER_USER_FILES": "c:\\temp\\RavenTestData\\userfiles",
|
||||
"AYANOVA_FOLDER_BACKUP_FILES": "c:\\temp\\RavenTestData\\backupfiles",
|
||||
"AYANOVA_FOLDER_TEMPORARY_SERVER_FILES": "c:\\temp\\RavenTestData\\tempfiles",
|
||||
"AYANOVA_SERVER_TEST_MODE": "true",
|
||||
"AYANOVA_SERVER_TEST_MODE": "false",
|
||||
"AYANOVA_SERVER_TEST_MODE_SEEDLEVEL": "small",
|
||||
"AYANOVA_SERVER_TEST_MODE_TZ_OFFSET": "-7",
|
||||
"AYANOVA_BACKUP_PG_DUMP_PATH": "C:\\data\\code\\postgres_14\\bin\\"
|
||||
|
||||
@@ -20,7 +20,6 @@ v8 does not have a Global Wiki page (the Wiki page formerly accessible from the
|
||||
v8 does not have Regions, all functionality previously in Regions will be split out into several new and changed objects.
|
||||
The Region Wiki if found will be migrated to a User account created just to hold the Wiki and files named "zV8Migrate REGION_WIKI_REPOSITORY_region name"
|
||||
|
||||
|
||||
### Security groups
|
||||
* Security groups have been replaced by Roles.
|
||||
* No v7 security group information or settings are migrated into v8.
|
||||
@@ -124,7 +123,14 @@ The service bank feature has not been ported to AyaNova 8 as it does not appear
|
||||
|
||||
### Inventory
|
||||
|
||||
To ensure the inventory balances match, all parts are initially migrated to v8 with one billion in stock quantity. Then all inventory related objects are migrated such as Purchase Orders, Inventory adjustments and Service Work orders. Finally at the end of migration inventory transactions are made to the v8 inventory levels to bring the quantities on hand into balance with the v7 quantity on hand for each part. In AyaNova 8 inventory is consumed the moment a Part is saved on a work order which differs from v7 where inventory is consumed when a Part is set to Used in service on a work order. For this reason inventory totals will be lower in v8 than in v7 due to any work orders migrated that have not had their parts set to Used in service in v7.
|
||||
To ensure the inventory balances match, all parts are initially migrated to v8 with one billion in stock quantity. Then all inventory related objects are migrated such as Purchase Orders, Inventory adjustments and Service Work orders. Finally at the end of migration inventory transactions are made to the v8 inventory levels to bring the quantities on hand into balance with the v7 quantity on hand for each part. In AyaNova 8 inventory is consumed the moment a Part is saved on a work order which differs from v7 where inventory is consumed when a Part is set to Used in service on a work order.
|
||||
|
||||
|
||||
#### Work order item parts not "Used in service"
|
||||
|
||||
v8 work order item part affects inventory immediately when entered and saved but in v7 inventory is not affected until "Used in service" is checkmarked. For this reason, v7 work orders with work order item parts **not** checkmarked Used in service will have those quantities migrated to the "Suggested quantity" field instead of the Quantity field. This is to ensure that inventory remains in balance after migration.
|
||||
|
||||
In v8 Users will need to either use the "Realize suggested part quantities" command in the work order to automatically copy the suggested amounts to the Quantity field in all work order item part records for that work order or manually enter each one in the quantity field as appropriate.
|
||||
|
||||
#### Inventory adjustments
|
||||
Inventory and Serial numbers work differently in v8; Inventory adjustments can not be migrated with their original entry dates as the new v8 inventory "blockchain" system does not allow entries out of order so they are migrated as Inventory Transactions in v8 and the description of the transaction is named in this pattern: `v7Adjustment {v7 inventory adjustment ID number} {v7 adjustment "reason" field} {v7 adjustment "Date Adjusted"}` For example "v7Adjustment 45 Store stock opening inventory adjustment on 2005-11-27 10:50:53 AM".
|
||||
@@ -148,6 +154,8 @@ You should keep a copy of AyaNova 7 available for some time after migration for
|
||||
|
||||
Users are migrated to inactive accounts with no authorization Roles, password or login name set.
|
||||
|
||||
Note: **Inactive users do not display in the v8 schedule** - in v8 the schedule does not show scheduled user records for inactive users so initially you will not see scheduled items show in the schedule until Users are set back to Active=true.
|
||||
|
||||
All active users will need to have some settings made:
|
||||
|
||||
* Role - you will need to select one or more Authorization Roles to grant the User access to AyaNova.
|
||||
@@ -157,6 +165,7 @@ All active users will need to have some settings made:
|
||||
|
||||
Once Users are able to login they will need to subscribe to any [Notifications](home-notify-subscriptions.md) they require. The V8 Notification system is simplified from v7 and easier to set up but it can't be migrated as they are very different systems.
|
||||
|
||||
|
||||
### Customize Translations
|
||||
|
||||
If you had previously been using a customized Locale in v7 read the important note regarding this in the section above. We recommend not using the migrated translation but rather replicating any changes needed in a copy of a v8 stock language translation and setting User's to *that* translation rather than the one the v8Migrate has created.
|
||||
|
||||
@@ -52,6 +52,9 @@ All inventory changes are tracked in a blockchain inside your AyaNova database a
|
||||
|
||||
AyaNova 8 does not permit negative on hand inventory values to exist, every part consumed must have a quantity of on-hand inventory to back it up or it's not allowed to be saved.
|
||||
|
||||
#### Suggested quantity
|
||||
|
||||
If there is a need to enter parts on a work order as a placeholder so as not to affect inventory for planning purposes the work order item part's "Suggested Quantity" field can be utilized for this purpose.
|
||||
|
||||
### Purchase orders / receipts
|
||||
Purchase orders and receipts have been combined in v8 and are no longer separate objects.
|
||||
|
||||
@@ -86,6 +86,14 @@ namespace AyaNova.DataList
|
||||
SqlValueColumnName = "apmitempart.quantity"
|
||||
});
|
||||
|
||||
FieldDefinitions.Add(new DataListFieldDefinition
|
||||
{
|
||||
TKey = "WorkOrderItemPartSuggestedQuantity",
|
||||
FieldKey = "WorkOrderItemPartSuggestedQuantity",
|
||||
UiFieldDataType = (int)UiFieldDataType.Decimal,
|
||||
SqlValueColumnName = "apmitempart.suggestedquantity"
|
||||
});
|
||||
|
||||
FieldDefinitions.Add(new DataListFieldDefinition
|
||||
{
|
||||
TKey = "PartUPC",
|
||||
|
||||
@@ -85,6 +85,14 @@ namespace AyaNova.DataList
|
||||
SqlValueColumnName = "aworkorderitempart.quantity"
|
||||
});
|
||||
|
||||
FieldDefinitions.Add(new DataListFieldDefinition
|
||||
{
|
||||
TKey = "WorkOrderItemPartSuggestedQuantity",
|
||||
FieldKey = "WorkOrderItemPartSuggestedQuantity",
|
||||
UiFieldDataType = (int)UiFieldDataType.Decimal,
|
||||
SqlValueColumnName = "apmitempart.suggestedquantity"
|
||||
});
|
||||
|
||||
FieldDefinitions.Add(new DataListFieldDefinition
|
||||
{
|
||||
TKey = "PartUPC",
|
||||
|
||||
@@ -942,6 +942,7 @@ namespace AyaNova.Biz
|
||||
l.Add(new FormField { TKey = "WorkOrderItemPartPartID", FieldKey = "WorkOrderItemPartPartID", TKeySection = "WorkOrderItemParts" });
|
||||
l.Add(new FormField { TKey = "WorkOrderItemPartPartWarehouseID", FieldKey = "WorkOrderItemPartPartWarehouseID", TKeySection = "WorkOrderItemParts" });
|
||||
l.Add(new FormField { TKey = "WorkOrderItemPartQuantity", FieldKey = "WorkOrderItemPartQuantity", TKeySection = "WorkOrderItemParts" });
|
||||
l.Add(new FormField { TKey = "WorkOrderItemPartSuggestedQuantity", FieldKey = "WorkOrderItemPartSuggestedQuantity", TKeySection = "WorkOrderItemParts" });
|
||||
l.Add(new FormField { TKey = "WorkOrderItemPartTaxPartSaleID", FieldKey = "WorkOrderItemPartTaxPartSaleID", TKeySection = "WorkOrderItemParts" });
|
||||
l.Add(new FormField { TKey = "PartName", FieldKey = "PartName", TKeySection = "WorkOrderItemParts" });
|
||||
l.Add(new FormField { TKey = "PartUPC", FieldKey = "PartUPC", TKeySection = "WorkOrderItemParts" });
|
||||
@@ -1493,7 +1494,8 @@ namespace AyaNova.Biz
|
||||
l.Add(new FormField { TKey = "PurchaseOrderItemSerialNumbers", FieldKey = "WorkOrderItemPartSerials", TKeySection = "WorkOrderItemParts" });
|
||||
l.Add(new FormField { TKey = "WorkOrderItemPartPartID", FieldKey = "WorkOrderItemPartPartID", TKeySection = "WorkOrderItemParts" });
|
||||
l.Add(new FormField { TKey = "WorkOrderItemPartPartWarehouseID", FieldKey = "WorkOrderItemPartPartWarehouseID", TKeySection = "WorkOrderItemParts" });
|
||||
l.Add(new FormField { TKey = "WorkOrderItemPartQuantity", FieldKey = "WorkOrderItemPartQuantity", TKeySection = "WorkOrderItemParts" });
|
||||
l.Add(new FormField { TKey = "WorkOrderItemPartQuantity", FieldKey = "WorkOrderItemPartQuantity", TKeySection = "WorkOrderItemParts" });
|
||||
l.Add(new FormField { TKey = "WorkOrderItemPartSuggestedQuantity", FieldKey = "WorkOrderItemPartSuggestedQuantity", TKeySection = "WorkOrderItemParts" });
|
||||
l.Add(new FormField { TKey = "WorkOrderItemPartTaxPartSaleID", FieldKey = "WorkOrderItemPartTaxPartSaleID", TKeySection = "WorkOrderItemParts" });
|
||||
l.Add(new FormField { TKey = "PartName", FieldKey = "PartName", TKeySection = "WorkOrderItemParts" });
|
||||
l.Add(new FormField { TKey = "PartUPC", FieldKey = "PartUPC", TKeySection = "WorkOrderItemParts" });
|
||||
|
||||
@@ -27,6 +27,7 @@ namespace AyaNova.Models
|
||||
public string PartWarehouseViz { get; set; }
|
||||
[Required]
|
||||
public decimal Quantity { get; set; }
|
||||
public decimal SuggestedQuantity { get; set; }
|
||||
public long? TaxPartSaleId { get; set; }
|
||||
[NotMapped]
|
||||
public string TaxCodeViz { get; set; }
|
||||
|
||||
@@ -1542,6 +1542,7 @@
|
||||
"WorkOrderItemPartPartWarehouseID": "Lager",
|
||||
"WorkOrderItemPartPrice": "Preis",
|
||||
"WorkOrderItemPartQuantity": "Menge",
|
||||
"WorkOrderItemPartSuggestedQuantity": "Empfohlene Menge",
|
||||
"WorkOrderItemPartQuantityReserved": "Gewählte Menge",
|
||||
"WorkOrderItemPartTaxPartSaleID": "Umsatzsteuer",
|
||||
"WorkOrderItemPartUIQuantityReservedPM": "Erforderliche Menge",
|
||||
|
||||
@@ -1542,6 +1542,7 @@
|
||||
"WorkOrderItemPartPartWarehouseID": "Warehouse",
|
||||
"WorkOrderItemPartPrice": "Price",
|
||||
"WorkOrderItemPartQuantity": "Quantity",
|
||||
"WorkOrderItemPartSuggestedQuantity": "Suggested quantity",
|
||||
"WorkOrderItemPartQuantityReserved": "Pre-selected quantity",
|
||||
"WorkOrderItemPartTaxPartSaleID": "Sales tax",
|
||||
"WorkOrderItemPartUIQuantityReservedPM": "Quantity required",
|
||||
|
||||
@@ -1542,6 +1542,7 @@
|
||||
"WorkOrderItemPartPartWarehouseID": "Almacén",
|
||||
"WorkOrderItemPartPrice": "Precio",
|
||||
"WorkOrderItemPartQuantity": "Cantidad",
|
||||
"WorkOrderItemPartSuggestedQuantity": "Cantidad sugerida",
|
||||
"WorkOrderItemPartQuantityReserved": "Cantidad preseleccionada",
|
||||
"WorkOrderItemPartTaxPartSaleID": "Impuesto sobre la venta",
|
||||
"WorkOrderItemPartUIQuantityReservedPM": "Cantidad solicitada",
|
||||
|
||||
@@ -1542,6 +1542,7 @@
|
||||
"WorkOrderItemPartPartWarehouseID": "Magasin",
|
||||
"WorkOrderItemPartPrice": "Prix",
|
||||
"WorkOrderItemPartQuantity": "Quantité",
|
||||
"WorkOrderItemPartSuggestedQuantity": "Quantité suggérée",
|
||||
"WorkOrderItemPartQuantityReserved": "Quantité présélectionnée",
|
||||
"WorkOrderItemPartTaxPartSaleID": "Taxe sur les ventes",
|
||||
"WorkOrderItemPartUIQuantityReservedPM": "Quantité requise",
|
||||
|
||||
@@ -846,7 +846,7 @@ $BODY$ LANGUAGE PLPGSQL STABLE");
|
||||
//WORKORDERITEM PART
|
||||
await ExecQueryAsync("CREATE TABLE aworkorderitempart (id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, workorderitemid BIGINT NOT NULL REFERENCES aworkorderitem (id), "
|
||||
+ "description TEXT, serials TEXT, partid BIGINT NOT NULL REFERENCES apart, partwarehouseid BIGINT NOT NULL REFERENCES apartwarehouse, quantity DECIMAL(19,5) NOT NULL default 0, "
|
||||
+ "cost DECIMAL(38,18) NOT NULL default 0, listprice DECIMAL(38,18) NOT NULL default 0, taxpartsaleid BIGINT REFERENCES ataxcode, priceoverride DECIMAL(38,18) "
|
||||
+ "suggestedquantity DECIMAL(19,5) NOT NULL default 0, cost DECIMAL(38,18) NOT NULL default 0, listprice DECIMAL(38,18) NOT NULL default 0, taxpartsaleid BIGINT REFERENCES ataxcode, priceoverride DECIMAL(38,18) "
|
||||
+ ")");
|
||||
|
||||
//WORKORDERITEM PART REQUEST
|
||||
|
||||
Reference in New Issue
Block a user