erpnext-queue-client 1.0.6 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client.js +41 -16
- package/dist/erpnext/decryptFromErpNext.server.d.ts +1 -1
- package/dist/erpnext/doctypeResourceRequest.d.ts +38 -0
- package/dist/erpnext/doctypeResourceRequest.js +59 -0
- package/dist/erpnext/doctypeSubmittableResourceRequest.d.ts +8 -0
- package/dist/erpnext/doctypeSubmittableResourceRequest.js +39 -0
- package/dist/erpnext/doctypes/address.d.ts +263 -0
- package/dist/erpnext/doctypes/address.js +46 -0
- package/dist/erpnext/doctypes/contact.d.ts +383 -0
- package/dist/erpnext/doctypes/contact.js +46 -0
- package/dist/erpnext/doctypes/deliveryNote.d.ts +985 -0
- package/dist/erpnext/doctypes/deliveryNote.js +38 -0
- package/dist/erpnext/doctypes/item.d.ts +572 -0
- package/dist/erpnext/doctypes/item.js +95 -0
- package/dist/erpnext/doctypes/purchaseReceipt.d.ts +743 -0
- package/dist/erpnext/doctypes/purchaseReceipt.js +50 -0
- package/dist/erpnext/doctypes/shipment.d.ts +752 -0
- package/dist/erpnext/doctypes/shipment.js +51 -0
- package/dist/erpnext/erpnextRequestWrapper.js +15 -13
- package/dist/erpnext/fileRequests.d.ts +10 -0
- package/dist/erpnext/fileRequests.js +42 -0
- package/dist/erpnext/methodRequest.d.ts +15 -0
- package/dist/erpnext/methodRequest.js +32 -0
- package/dist/erpnext/model/Address.d.ts +200 -198
- package/dist/erpnext/model/Address.js +3 -2
- package/dist/erpnext/model/Contact.d.ts +343 -344
- package/dist/erpnext/model/Contact.js +2 -2
- package/dist/erpnext/model/Country.d.ts +83 -31
- package/dist/erpnext/model/Country.js +2 -6
- package/dist/erpnext/model/Customer.d.ts +64 -65
- package/dist/erpnext/model/Customer.js +2 -2
- package/dist/erpnext/model/DeliveryNote.d.ts +1048 -1048
- package/dist/erpnext/model/DispatchRun.d.ts +399 -399
- package/dist/erpnext/model/DispatcherPreset.d.ts +94 -94
- package/dist/erpnext/model/ERPNextRequest.d.ts +47 -30
- package/dist/erpnext/model/ERPNextResponse.d.ts +4 -4
- package/dist/erpnext/model/File.d.ts +88 -88
- package/dist/erpnext/model/Fulfiller.d.ts +97 -97
- package/dist/erpnext/model/FulfillerSettings.d.ts +66 -66
- package/dist/erpnext/model/FulfillmentStation.d.ts +2 -2
- package/dist/erpnext/model/Item.d.ts +819 -819
- package/dist/erpnext/model/Item.js +2 -2
- package/dist/erpnext/model/PaymentEntry.d.ts +197 -0
- package/dist/erpnext/model/PaymentEntry.js +63 -0
- package/dist/erpnext/model/ProjectedQuantityReport.d.ts +178 -178
- package/dist/erpnext/model/PurchaseOrder.d.ts +528 -528
- package/dist/erpnext/model/Receipt.d.ts +448 -448
- package/dist/erpnext/model/Receipt.js +2 -2
- package/dist/erpnext/model/ReceiptDraft.d.ts +392 -392
- package/dist/erpnext/model/Shipment.d.ts +709 -709
- package/dist/erpnext/model/ShippingProvider.d.ts +198 -198
- package/dist/erpnext/model/StockEntry.d.ts +248 -0
- package/dist/erpnext/model/StockEntry.js +76 -0
- package/dist/erpnext/model/StockReconciliation.d.ts +187 -0
- package/dist/erpnext/model/StockReconciliation.js +44 -0
- package/dist/erpnext/model/Supplier.d.ts +105 -0
- package/dist/erpnext/model/Supplier.js +39 -0
- package/dist/erpnext/model/Waitlist.d.ts +32 -0
- package/dist/erpnext/model/Waitlist.js +19 -0
- package/dist/erpnext/model/WarehouseCategory.d.ts +6 -6
- package/dist/erpnext/resourceRequest.d.ts +39 -10
- package/dist/erpnext/resourceRequest.js +115 -14
- package/dist/index.d.ts +39 -4
- package/dist/index.js +43 -8
- package/dist/utils/fernet.server.d.ts +11 -11
- package/dist/utils/fernet.server.js +0 -1
- package/dist/utils/request.js +2 -2
- package/dist/utils/zodUtils.d.ts +2 -1
- package/dist/utils/zodUtils.js +14 -1
- package/package.json +4 -1
- package/dist/erpnext/doctypes/country.d.ts +0 -9
- package/dist/erpnext/doctypes/country.js +0 -28
- package/dist/erpnext/erpnextRequests.d.ts +0 -1
- package/dist/erpnext/erpnextRequests.js +0 -15
- package/dist/erpnext.d.ts +0 -20
- package/dist/erpnext.js +0 -45
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.ERPNextShipment = void 0;
|
|
13
|
+
const doctypeSubmittableResourceRequest_1 = require("../doctypeSubmittableResourceRequest");
|
|
14
|
+
const methodRequest_1 = require("../methodRequest");
|
|
15
|
+
const Shipment_1 = require("../model/Shipment");
|
|
16
|
+
class ERPNextShipment {
|
|
17
|
+
constructor(temporalClient) {
|
|
18
|
+
this.temporalClient = temporalClient;
|
|
19
|
+
this.baseRequest = new doctypeSubmittableResourceRequest_1.ERPNextDoctypeSubmittableResourceRequest(temporalClient, "Shipment", Shipment_1.Shipment);
|
|
20
|
+
this.methodRequest = new methodRequest_1.ERPNextMethodRequest(temporalClient);
|
|
21
|
+
this.getList = this.baseRequest.getList;
|
|
22
|
+
this.getById = this.baseRequest.getById;
|
|
23
|
+
this.updateById = this.baseRequest.updateById;
|
|
24
|
+
this.deleteById = this.baseRequest.deleteById;
|
|
25
|
+
this.create = this.baseRequest.create;
|
|
26
|
+
this.cancel = this.baseRequest.cancel;
|
|
27
|
+
this.submit = this.baseRequest.submit;
|
|
28
|
+
}
|
|
29
|
+
createShipmentDraft(deliveryNoteName) {
|
|
30
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
31
|
+
const draft = yield this.methodRequest.request({
|
|
32
|
+
methodName: "erpnext.stock.doctype.delivery_note.delivery_note.make_shipment",
|
|
33
|
+
requestMethod: "POST",
|
|
34
|
+
responseValidationModel: Shipment_1.ShipmentDraftFromDeliveryNote,
|
|
35
|
+
params: `?source_name=${deliveryNoteName}`,
|
|
36
|
+
});
|
|
37
|
+
return draft;
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
addShippingLabelAndSubmit(shipmentErpNextName, body) {
|
|
41
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
42
|
+
const shipment = yield this.baseRequest.updateById({
|
|
43
|
+
resourceId: shipmentErpNextName,
|
|
44
|
+
inputValidationModel: Shipment_1.ShipmentAddShippingLabelAndSubmitBody,
|
|
45
|
+
body,
|
|
46
|
+
});
|
|
47
|
+
return shipment;
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
exports.ERPNextShipment = ERPNextShipment;
|
|
@@ -28,24 +28,29 @@ function getHeaders(credentials) {
|
|
|
28
28
|
}
|
|
29
29
|
function erpnextRequest(credentials, options) {
|
|
30
30
|
return __awaiter(this, void 0, void 0, function* () {
|
|
31
|
-
|
|
31
|
+
var _a, _b;
|
|
32
|
+
const baseUrl = "methodName" in options && options.methodName
|
|
32
33
|
? `${credentials.erpnextUrl}/api/method/${options.methodName}`
|
|
33
|
-
: options.resourceName
|
|
34
|
+
: "resourceName" in options && options.resourceName
|
|
34
35
|
? `${credentials.erpnextUrl}/api/resource/${options.resourceName}`
|
|
35
|
-
: options.url;
|
|
36
|
+
: (_a = ("url" in options && options.url)) !== null && _a !== void 0 ? _a : undefined;
|
|
36
37
|
if (!baseUrl)
|
|
37
38
|
throw new Error("No resource or method name provided");
|
|
38
|
-
const inputUrl = `${baseUrl.startsWith("/api/method") ? `${credentials.erpnextUrl}` : ""}${baseUrl}${
|
|
39
|
-
|
|
39
|
+
const inputUrl = `${baseUrl.startsWith("/api/method") ? `${credentials.erpnextUrl}` : ""}${baseUrl}${"resourceId" in options && options.resourceId
|
|
40
|
+
? `/${options.resourceId}`
|
|
41
|
+
: ""}${options.params ? `${options.params}` : ""}`;
|
|
42
|
+
const url = "resourceName" in options &&
|
|
43
|
+
options.resourceName &&
|
|
44
|
+
options.requestMethod === "GET"
|
|
40
45
|
? inputUrl.includes("?")
|
|
41
46
|
? `${inputUrl}&limit=0`
|
|
42
|
-
: !options.resourceId
|
|
47
|
+
: !("resourceId" in options && options.resourceId)
|
|
43
48
|
? `${inputUrl}?limit=0`
|
|
44
49
|
: inputUrl
|
|
45
50
|
: inputUrl;
|
|
46
51
|
const combinedHeaders = Object.assign(Object.assign({}, getHeaders(credentials)), (options.headers ? options.headers : {}));
|
|
47
52
|
// lgTemporal.info(`Temp url request check ${url}`);
|
|
48
|
-
const unvalidatedResult = yield (0, request_1.request)(Object.assign({ headers: combinedHeaders, url, method: options.requestMethod, inputValidationModel: options.inputValidationModel
|
|
53
|
+
const unvalidatedResult = yield (0, request_1.request)(Object.assign({ headers: combinedHeaders, url, method: options.requestMethod, inputValidationModel: (_b = ("inputValidationModel" in options && options.inputValidationModel)) !== null && _b !== void 0 ? _b : false, responseValidationModel: false }, ("body" in options && options.body ? { body: options.body } : {}))).catch((err) => {
|
|
49
54
|
throw err.status
|
|
50
55
|
? new Error(`Error ${err.status}: ${err.response &&
|
|
51
56
|
typeof err.response === "object" &&
|
|
@@ -55,10 +60,10 @@ function erpnextRequest(credentials, options) {
|
|
|
55
60
|
: JSON.stringify(err.response)}`)
|
|
56
61
|
: err;
|
|
57
62
|
});
|
|
58
|
-
if (options.responseValidationModel
|
|
63
|
+
if (!options.responseValidationModel)
|
|
59
64
|
return unvalidatedResult;
|
|
60
65
|
let returnValue;
|
|
61
|
-
if (options.methodName) {
|
|
66
|
+
if ("methodName" in options && options.methodName) {
|
|
62
67
|
const validatedResult = (0, zodUtils_1.validateData)(unvalidatedResult, ERPNextResponse_1.ERPNextMethodResponse);
|
|
63
68
|
returnValue = (0, zodUtils_1.validateData)(validatedResult.message, options.responseValidationModel);
|
|
64
69
|
}
|
|
@@ -73,10 +78,7 @@ function erpNextDownloadFile(credentials, url) {
|
|
|
73
78
|
return __awaiter(this, void 0, void 0, function* () {
|
|
74
79
|
const isErpNextPrivateUrl = url.includes("/api/method");
|
|
75
80
|
const inputUrl = `${url.startsWith("/api/method") ? `${credentials.erpnextUrl}` : ""}${url}`;
|
|
76
|
-
let response = yield fetch(inputUrl, {
|
|
77
|
-
headers: isErpNextPrivateUrl ? getHeaders(credentials) : undefined,
|
|
78
|
-
redirect: isErpNextPrivateUrl ? "manual" : "follow",
|
|
79
|
-
});
|
|
81
|
+
let response = yield fetch(inputUrl, Object.assign(Object.assign({}, (isErpNextPrivateUrl ? { headers: getHeaders(credentials) } : {})), { redirect: isErpNextPrivateUrl ? "manual" : "follow" }));
|
|
80
82
|
if ((response === null || response === void 0 ? void 0 : response.status) === 302) {
|
|
81
83
|
const redirectUrl = response.headers.get("location");
|
|
82
84
|
if (!redirectUrl)
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { TemporalClient } from "../client";
|
|
2
|
+
import { ERPNextCredentials } from "./model/ERPNextQueue";
|
|
3
|
+
import { ERPNextValidatedFileType } from "./model/File";
|
|
4
|
+
export declare class ERPNextFileRequests {
|
|
5
|
+
private client;
|
|
6
|
+
private credentials;
|
|
7
|
+
constructor(client: TemporalClient, credentials?: ERPNextCredentials);
|
|
8
|
+
fileDownload: (url: string) => Promise<Buffer<ArrayBufferLike>>;
|
|
9
|
+
fileUpload: (file: Buffer, filename: string, doctypeToLinkTo?: string, docnameToLinkTo?: string, isPrivate?: boolean, priority?: number) => Promise<ERPNextValidatedFileType>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.ERPNextFileRequests = void 0;
|
|
13
|
+
const erpnextRequestWrapper_1 = require("./erpnextRequestWrapper");
|
|
14
|
+
const File_1 = require("./model/File");
|
|
15
|
+
class ERPNextFileRequests {
|
|
16
|
+
constructor(client, credentials) {
|
|
17
|
+
this.fileDownload = (url) => __awaiter(this, void 0, void 0, function* () {
|
|
18
|
+
if (!this.credentials)
|
|
19
|
+
throw new Error("File download not possible. Please provide ERPNext API credentials.");
|
|
20
|
+
return yield (0, erpnextRequestWrapper_1.erpNextDownloadFile)(this.credentials, url);
|
|
21
|
+
});
|
|
22
|
+
this.fileUpload = (file_1, filename_1, ...args_1) => __awaiter(this, [file_1, filename_1, ...args_1], void 0, function* (file, filename, doctypeToLinkTo = "", docnameToLinkTo = "", isPrivate = true, priority = 5) {
|
|
23
|
+
if (!this.credentials)
|
|
24
|
+
throw new Error("File upload not possible. Please provide ERPNext API credentials.");
|
|
25
|
+
const body = Object.assign({ filedata: file.toString("base64"), filename, from_form: 1, is_private: isPrivate ? 1 : 0 }, (doctypeToLinkTo &&
|
|
26
|
+
docnameToLinkTo && {
|
|
27
|
+
doctype: doctypeToLinkTo,
|
|
28
|
+
docname: docnameToLinkTo,
|
|
29
|
+
}));
|
|
30
|
+
const result = yield (0, erpnextRequestWrapper_1.erpnextRequest)(this.credentials, {
|
|
31
|
+
requestMethod: "POST",
|
|
32
|
+
responseValidationModel: File_1.ERPNextValidatedFile,
|
|
33
|
+
methodName: "uploadfile",
|
|
34
|
+
body,
|
|
35
|
+
});
|
|
36
|
+
return result;
|
|
37
|
+
});
|
|
38
|
+
this.client = client;
|
|
39
|
+
this.credentials = credentials;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
exports.ERPNextFileRequests = ERPNextFileRequests;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { z, ZodTypeAny } from "zod";
|
|
2
|
+
import { TemporalClient } from "../client";
|
|
3
|
+
export declare class ERPNextMethodRequest {
|
|
4
|
+
private temporalClient;
|
|
5
|
+
constructor(temporalClient: TemporalClient);
|
|
6
|
+
request<T extends ZodTypeAny, K extends ZodTypeAny>({ methodName, requestMethod, body, inputValidationModel, responseValidationModel, params, priority, }: {
|
|
7
|
+
methodName: string;
|
|
8
|
+
requestMethod: "GET" | "POST" | "PUT" | "DELETE" | "PATCH";
|
|
9
|
+
body?: z.TypeOf<K>;
|
|
10
|
+
inputValidationModel?: K;
|
|
11
|
+
responseValidationModel?: T;
|
|
12
|
+
params?: string;
|
|
13
|
+
priority?: number;
|
|
14
|
+
}): Promise<z.TypeOf<T>>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.ERPNextMethodRequest = void 0;
|
|
13
|
+
const zod_1 = require("zod");
|
|
14
|
+
class ERPNextMethodRequest {
|
|
15
|
+
constructor(temporalClient) {
|
|
16
|
+
this.temporalClient = temporalClient;
|
|
17
|
+
}
|
|
18
|
+
request(_a) {
|
|
19
|
+
return __awaiter(this, arguments, void 0, function* ({ methodName, requestMethod, body, inputValidationModel, responseValidationModel, params, priority = 5, }) {
|
|
20
|
+
if (responseValidationModel && !responseValidationModel.description)
|
|
21
|
+
throw new Error("Resource model must have a description");
|
|
22
|
+
const result = yield this.temporalClient.executeERPNextRequestWorkflow(`${requestMethod}-${methodName}`, Object.assign(Object.assign(Object.assign(Object.assign({ methodName,
|
|
23
|
+
requestMethod }, (inputValidationModel ? { inputValidationModel } : {})), { responseValidationModel: responseValidationModel
|
|
24
|
+
? zod_1.z
|
|
25
|
+
.object({ message: responseValidationModel })
|
|
26
|
+
.describe(responseValidationModel.description)
|
|
27
|
+
: undefined }), (params ? { params } : {})), { body }), "erpnext", priority);
|
|
28
|
+
return result.message;
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
exports.ERPNextMethodRequest = ERPNextMethodRequest;
|