SuggestedQuantity field added to pm and wo item parts

This commit is contained in:
2021-11-09 18:10:52 +00:00
parent 2a153fd5de
commit 2bcb576cc2
5 changed files with 141 additions and 13 deletions

View File

@@ -124,23 +124,27 @@ Coded by importance
██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██ ██ ██ ██████ ██ ██ ██ ██ ██ ███████
todo: bugbug - v8migrate is not using the service completed status properly. It makes one that is locked automatically to be used with sc v7 wo but then it uses a different one that isn't locked
not sure why there are two but it should be using the locking one.
todo: should some things that were tagified be reverted back like in v7 due to reporting and other issues?
todo: inventory migration will it be out of balance due to open work orders? I.E. at the end v7 tries to fixup inventory to balance, however the open wo should have consumed
those quantities so that's not right. perhaps during inventory synch it needs to iterate all open wo where parts are not used in service in v7 and deduct those from the inventory total before the fixup?
Or maybe that's another step done with the v8 data by examining *it's* open wo and handling that way??
Maybe it exports only closed wo in one stage, then syncs inventory, then exports open wo?
what if people never closed their wo or used in service??
todo: add it as a todo statement in the export log and post export instructions page and specifically mention that they won't see those workorders in schedule until they set Techs to active
not setting active forces license compliance and avoids license issues when migrating that might crop up in some scenarios
also it forces them to make a choice in who to activate and allows for downgrade of licenses if they choose to.
3. REGARDING: - known bug: v8 inventory is incorrect currently because it synchronizes v7 and v8 to match at the end however it shouldn't for any parts on v7 workorders not set to Used in service as those should be consumed in v8. Working on a solution.
todo: unused parts on workorder handling
Add "Suggested quantity" field to workorder item part backed by db column
also add it to PM's so users can bypass inventory temporarily for pm's that generate work orders
Add high level menu item to "Realize suggested part quanitities", probably at workorder level so it's one and done
In migrate, if a part is unused then it's qty goes into suggested and quantity is set to zero
Keep inventory sync as is, it's now correct as the quantities are zero for unused parts so no out of balance issue
Maybe Tag the workorders with "v8migrate-has-suggested-parts"
Make sure serials are handled correctly, I'm guessing as is because they wouldn't be entered if they didn't exist
I suggest (if there is any head scratching trying to code for this) to just include in the HELP DOCS Changes about v7/Migrate stuff, in section about Parts and serials :
In v7 serials for parts that are selected in workorders that have not yet been checkmarked Service Completed continue to show as available. Whereas v8 serials for parts will not show as available that have been added to a workorder regardless of the workorder status
If end user is confirming that parts serials in v7 are successfully migrated to v8, to be aware of this difference between v7 and v8
End user can quickly see which serials are actually consumed in v7 open workorders by filtering their AyaNova v7 Service -> Service Workorders ->Parts grid by the part's "Serial Number" column (selecting NonBlanks) and the Service Completed column (selecting Blanks) to display a list of open workorders that have serialized parts added to these work orders
@@ -224,8 +228,16 @@ function ayGroupByTag(reportDataArray, tagContains) {
\_____|______|_____|______|_| \_| |_|
- 1 since v8 doesn't have a way to add parts that are not in inventory, does it need a reserved or desired qty type field or record??
i'd prefer not as it could go awry and not be consumed if they just don't do it properly.
- 1 todo: server settings ops page is not showing new report rendering settings, it appears to have static items it expects and displays :(
- 1 locked quote can't be unlocked because status *can* be changed but doesn't go dirty to save
- 1 quote convert to wo but insufficient inventory go to save get mysterious error and red woitem but not in the part which is green and shows request more
sb red not green and entire row of part should be dirty and error should mention issue at top, not just error api2200 or whatever
at least say "this workorder has noe or more error preventing save see below" or something
A work order should show a plain "english" error at top that outlines the error inside below
Also if there is an error in parts then that should be highlighted, why isn't it?
- 1 todo: firefox schedule fix: https://github.com/vuetifyjs/vuetify/issues/14243#issuecomment-944907925
- 1 todo: admin-history page showing http://localhost:8080/adm-history LT:Global but other things are properly translated

View File

@@ -235,6 +235,51 @@
</template>
</v-col>
<v-col
v-if="form().showMe(this, 'WorkOrderItemPartSuggestedQuantity')"
cols="12"
sm="6"
lg="4"
xl="3"
>
<gz-decimal
v-model="
value.items[activeWoItemIndex].parts[activeItemIndex]
.suggestedQuantity
"
:readonly="
formState.readOnly || isDeleted || value.userIsRestrictedType
"
:disabled="isDeleted"
:label="$ay.t('WorkOrderItemPartSuggestedQuantity')"
:ref="
`Items[${activeWoItemIndex}].parts[${activeItemIndex}].suggestedQuantity`
"
data-cy="partQuantity"
:error-messages="
form().serverErrors(
this,
`Items[${activeWoItemIndex}].parts[${activeItemIndex}].suggestedQuantity`
)
"
:rules="[
form().decimalValid(
this,
`Items[${activeWoItemIndex}].parts[${activeItemIndex}].suggestedQuantity`
),
form().required(
this,
`Items[${activeWoItemIndex}].parts[${activeItemIndex}].suggestedQuantity`
)
]"
@input="
fieldValueChanged(
`Items[${activeWoItemIndex}].parts[${activeItemIndex}].suggestedQuantity`
)
"
></gz-decimal>
</v-col>
<v-col
v-if="form().showMe(this, 'WorkOrderItemPartDescription')"
cols="12"
@@ -887,6 +932,14 @@ export default {
});
}
if (this.form().showMe(this, "WorkOrderItemPartSuggestedQuantity")) {
headers.push({
text: this.$ay.t("WorkOrderItemPartSuggestedQuantity"),
align: "right",
value: "suggestedQuantity"
});
}
if (this.form().showMe(this, "PartName")) {
headers.push({
text: this.$ay.t("PartName"),
@@ -1039,6 +1092,10 @@ export default {
x.quantity,
this.pvm.languageName
),
suggestedQuantity: window.$gz.locale.decimalLocalized(
x.suggestedQuantity,
this.pvm.languageName
),
partNameViz: x.partNameViz,
upcViz: x.upcViz,
description: x.description,

View File

@@ -246,6 +246,51 @@
</template>
</v-col>
<v-col
v-if="form().showMe(this, 'WorkOrderItemPartSuggestedQuantity')"
cols="12"
sm="6"
lg="4"
xl="3"
>
<gz-decimal
v-model="
value.items[activeWoItemIndex].parts[activeItemIndex]
.suggestedQuantity
"
:readonly="
formState.readOnly || isDeleted || value.userIsRestrictedType
"
:disabled="isDeleted"
:label="$ay.t('WorkOrderItemPartSuggestedQuantity')"
:ref="
`Items[${activeWoItemIndex}].parts[${activeItemIndex}].suggestedQuantity`
"
data-cy="partQuantity"
:error-messages="
form().serverErrors(
this,
`Items[${activeWoItemIndex}].parts[${activeItemIndex}].suggestedQuantity`
)
"
:rules="[
form().decimalValid(
this,
`Items[${activeWoItemIndex}].parts[${activeItemIndex}].suggestedQuantity`
),
form().required(
this,
`Items[${activeWoItemIndex}].parts[${activeItemIndex}].suggestedQuantity`
)
]"
@input="
fieldValueChanged(
`Items[${activeWoItemIndex}].parts[${activeItemIndex}].suggestedQuantity`
)
"
></gz-decimal>
</v-col>
<v-col
v-if="form().showMe(this, 'WorkOrderItemPartDescription')"
cols="12"
@@ -907,6 +952,14 @@ export default {
});
}
if (this.form().showMe(this, "WorkOrderItemPartSuggestedQuantity")) {
headers.push({
text: this.$ay.t("WorkOrderItemPartSuggestedQuantity"),
align: "right",
value: "suggestedQuantity"
});
}
if (this.form().showMe(this, "PartName")) {
headers.push({
text: this.$ay.t("PartName"),
@@ -1059,6 +1112,10 @@ export default {
x.quantity,
this.pvm.languageName
),
suggestedQuantity: window.$gz.locale.decimalLocalized(
x.suggestedQuantity,
this.pvm.languageName
),
partNameViz: x.partNameViz,
upcViz: x.upcViz,
description: x.description,

View File

@@ -2046,6 +2046,7 @@ async function fetchTranslatedText(vm) {
"PurchaseOrderItemSerialNumbers",
"WorkOrderItemPartPartWarehouseID",
"WorkOrderItemPartQuantity",
"WorkOrderItemPartSuggestedQuantity",
"WorkOrderItemPartTaxPartSaleID",
"WorkOrderItemPartPartID",
"PurchaseOrder",

View File

@@ -2299,6 +2299,7 @@ async function fetchTranslatedText(vm) {
"PurchaseOrderItemSerialNumbers",
"WorkOrderItemPartPartWarehouseID",
"WorkOrderItemPartQuantity",
"WorkOrderItemPartSuggestedQuantity",
"WorkOrderItemPartTaxPartSaleID",
"WorkOrderItemPartPartID",
"WorkOrderItemPartRequestList",