Merge pull request 'hotFix: refs #8264 parallelism' (!1182) from 8264-hotFix_globalInvoicing_paralellism into master
gitea/salix-front/pipeline/head This commit looks good
Details
gitea/salix-front/pipeline/head This commit looks good
Details
Reviewed-on: #1182 Reviewed-by: Jorge Penadés <jorgep@verdnatura.es>
This commit is contained in:
commit
45365ba933
|
@ -10,7 +10,6 @@ const { notify } = useNotify();
|
|||
|
||||
export const useInvoiceOutGlobalStore = defineStore({
|
||||
id: 'invoiceOutGlobal',
|
||||
|
||||
state: () => ({
|
||||
initialDataLoading: true,
|
||||
formInitialData: {
|
||||
|
@ -33,6 +32,7 @@ export const useInvoiceOutGlobalStore = defineStore({
|
|||
nRequests: 0,
|
||||
nPdfs: 0,
|
||||
totalPdfs: 0,
|
||||
formData: null,
|
||||
}),
|
||||
actions: {
|
||||
async init() {
|
||||
|
@ -93,8 +93,6 @@ export const useInvoiceOutGlobalStore = defineStore({
|
|||
},
|
||||
|
||||
async makeInvoice(formData, clientsToInvoice) {
|
||||
this.invoicing = true;
|
||||
const promises = [];
|
||||
try {
|
||||
this.printer = formData.printer;
|
||||
const params = {
|
||||
|
@ -119,11 +117,12 @@ export const useInvoiceOutGlobalStore = defineStore({
|
|||
);
|
||||
throw new Error("There aren't addresses to invoice");
|
||||
}
|
||||
this.invoicing = false;
|
||||
this.status = 'invoicing';
|
||||
for (let index = 0; index < this.parallelism; index++) {
|
||||
promises.push(this.invoiceClient(formData, index));
|
||||
}
|
||||
await Promise.all(promises);
|
||||
this.formData = formData;
|
||||
this.addressIndex = 0;
|
||||
this.errors = [];
|
||||
await this.invoiceClient();
|
||||
} catch (err) {
|
||||
this.handleError(err);
|
||||
}
|
||||
|
@ -182,45 +181,42 @@ export const useInvoiceOutGlobalStore = defineStore({
|
|||
}
|
||||
},
|
||||
|
||||
async invoiceClient(formData, index) {
|
||||
const address = this.addresses[index];
|
||||
async invoiceClient() {
|
||||
if (this.invoicing || this.nRequests >= this.parallelism) return;
|
||||
const address = this.addresses[this.addressIndex];
|
||||
|
||||
if (!address || !this.status || this.status == 'stopping') {
|
||||
this.status = 'stopping';
|
||||
this.invoicing = false;
|
||||
return;
|
||||
}
|
||||
try {
|
||||
this.invoicing = true;
|
||||
const params = {
|
||||
clientId: address.clientId,
|
||||
addressId: address.id,
|
||||
invoiceDate: new Date(formData.invoiceDate),
|
||||
maxShipped: new Date(formData.maxShipped),
|
||||
companyFk: formData.companyFk,
|
||||
serialType: formData.serialType,
|
||||
invoiceDate: new Date(this.formData.invoiceDate),
|
||||
maxShipped: new Date(this.formData.maxShipped),
|
||||
companyFk: this.formData.companyFk,
|
||||
serialType: this.formData.serialType,
|
||||
};
|
||||
|
||||
this.invoicing = true;
|
||||
|
||||
const { data } = await axios.post('InvoiceOuts/invoiceClient', params);
|
||||
|
||||
if (data) await this.makePdfAndNotify(data, address);
|
||||
this.isInvoicing = false;
|
||||
if (data) this.makePdfAndNotify(data, address);
|
||||
} catch (err) {
|
||||
if (err?.response?.status >= 400 && err?.response?.status < 500) {
|
||||
this.invoiceClientError(address, err.response?.data?.error?.message);
|
||||
return;
|
||||
} else {
|
||||
this.invoicing = false;
|
||||
notify(
|
||||
'invoiceOut.globalInvoices.errors.criticalInvoiceError',
|
||||
'negative'
|
||||
);
|
||||
throw new Error('Critical invoicing error, process stopped');
|
||||
}
|
||||
} finally {
|
||||
this.invoicing = false;
|
||||
this.addressIndex++;
|
||||
if (this.status != 'stopping')
|
||||
await this.invoiceClient(formData, this.addressIndex);
|
||||
this.invoiceClient();
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -231,9 +227,11 @@ export const useInvoiceOutGlobalStore = defineStore({
|
|||
const params = { printerFk: this.printer };
|
||||
await axios.post(`InvoiceOuts/${invoiceId}/makePdfAndNotify`, params);
|
||||
this.nPdfs++;
|
||||
this.nRequests--;
|
||||
} catch (err) {
|
||||
this.invoiceClientError(client, err.response?.data?.error?.message, true);
|
||||
} finally {
|
||||
this.nRequests--;
|
||||
this.invoiceClient();
|
||||
}
|
||||
},
|
||||
|
||||
|
|
Loading…
Reference in New Issue