@devx-commerce/plugin-gati
Version:
Gati ERP integration for Medusa
128 lines • 9.26 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.config = void 0;
exports.default = partyMasterHandler;
const utils_1 = require("@medusajs/framework/utils");
const core_flows_1 = require("@medusajs/medusa/core-flows");
const party_master_1 = require("../modules/party-master");
const address_formatter_1 = require("../utils/address-formatter");
const phone_mapper_1 = require("../utils/phone-mapper");
/**
* Handles party master events by syncing them with Medusa stock location
*/
async function partyMasterHandler({ event: { data: eventData }, container, }) {
try {
const { operation, data } = eventData;
console.log("eventData", eventData);
for (const item of data) {
switch (operation) {
case "create":
await handleCreate(container, item);
break;
case "update":
await handleUpdate(container, item);
break;
case "delete":
await handleDelete(container, item);
break;
default:
throw new Error(`Unsupported operation: ${operation}`);
}
}
}
catch (error) {
console.error("Error in collection master handler:", error);
throw error;
}
}
/**
* Creates a new stock location in Medusa and updates the party master mapping
*/
async function handleCreate(container, data) {
console.log("first", data);
const { result } = await (0, core_flows_1.createStockLocationsWorkflow)(container).run({
input: {
locations: [
{
name: data.firm_name,
address: {
...(0, address_formatter_1.formatAddress)({
address_1: data.firm_add1 || "",
address_2: data.firm_add2 || "",
address_3: data.firm_add3 || "",
}),
country_code: data.country === "India" ? "IN" : data.country,
city: data.firm_city,
phone: (0, phone_mapper_1.formatIndianPhoneNumber)(data.owner_mobile),
province: data.state.match(/\[(.*?)\]/)?.[1] || data.state,
postal_code: data.firm_pin_code,
},
metadata: {
external_id: data.id,
},
},
],
},
});
const partyMasterService = container.resolve(party_master_1.PARTY_MASTER_MODULE);
await partyMasterService.updatePartyMasters([
{
id: data.id,
mapping_id: result[0].id,
},
]);
}
/**
* Updates an existing stock location in Medusa if it has a mapping
*/
async function handleUpdate(container, data) {
const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
const customerModuleService = container.resolve(utils_1.Modules.CUSTOMER);
const { data: [party_master], } = await query.graph({
entity: "party_master",
fields: ["id", "mapping_id"],
filters: { id: data.id },
});
if (!party_master?.mapping_id) {
return;
}
await (0, core_flows_1.updateStockLocationsWorkflow)(container).run({
input: {
selector: {
id: party_master.mapping_id,
},
update: {
name: data.firm_name,
address: {
...(0, address_formatter_1.formatAddress)({
address_1: data.firm_add1 || "",
address_2: data.firm_add2 || "",
address_3: data.firm_add3 || "",
}),
country_code: data.country === "India" ? "IN" : data.country,
city: data.firm_city,
phone: (0, phone_mapper_1.formatIndianPhoneNumber)(data.owner_mobile),
province: data.state.match(/\[(.*?)\]/)?.[1] || data.state,
postal_code: data.firm_pin_code,
},
},
},
});
}
/**
* Deletes a stock location in Medusa if it has a mapping
*/
async function handleDelete(container, data) {
if (!data?.mapping_id) {
return;
}
await (0, core_flows_1.deleteStockLocationsWorkflow)(container).run({
input: {
ids: [data.mapping_id],
},
});
}
exports.config = {
event: "party_master_location",
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFydHktbWFzdGVyLWxvY2F0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3N1YnNjcmliZXJzL3BhcnR5LW1hc3Rlci1sb2NhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUEyRkEscUNBMEJDO0FBL0dELHFEQUErRTtBQUcvRSw0REFXcUM7QUFFckMsMERBQThEO0FBRTlELGtFQUFnRjtBQUNoRix3REFBZ0U7QUErRGhFOztHQUVHO0FBQ1ksS0FBSyxVQUFVLGtCQUFrQixDQUFDLEVBQy9DLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsRUFDMUIsU0FBUyxHQUN3QjtJQUNqQyxJQUFJLENBQUM7UUFDSCxNQUFNLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxHQUFHLFNBQVMsQ0FBQztRQUN0QyxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNwQyxLQUFLLE1BQU0sSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3hCLFFBQVEsU0FBUyxFQUFFLENBQUM7Z0JBQ2xCLEtBQUssUUFBUTtvQkFDWCxNQUFNLFlBQVksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7b0JBQ3BDLE1BQU07Z0JBQ1IsS0FBSyxRQUFRO29CQUNYLE1BQU0sWUFBWSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztvQkFDcEMsTUFBTTtnQkFDUixLQUFLLFFBQVE7b0JBQ1gsTUFBTSxZQUFZLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO29CQUNwQyxNQUFNO2dCQUNSO29CQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLFNBQVMsRUFBRSxDQUFDLENBQUM7WUFDM0QsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMscUNBQXFDLEVBQUUsS0FBSyxDQUFD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