41 lines
1.8 KiB
TypeScript
41 lines
1.8 KiB
TypeScript
function toText(value: string): string {
|
||
return String(value ?? "");
|
||
}
|
||
|
||
export function hasInventoryPurchaseStem(text: string): boolean {
|
||
return /купл[а-яёa-z0-9_-]*/iu.test(toText(text));
|
||
}
|
||
|
||
export function hasInventorySupplierCue(text: string): boolean {
|
||
const value = toText(text);
|
||
if (
|
||
/(?:кто\s+(?:(?:это|этот\s+товар|эту\s+позицию)\s+)?(?:нам\s+)?поставил|кто\s+(?:нам\s+)?поставил\s+(?:это|этот\s+товар|эту\s+позицию)|от\s+какого\s+поставщика|у\s+какого\s+поставщика|от\s+кого\s+куплен|у\s+кого\s+купили|у\s+кого\s+куплено|где\s+(?:мы\s+)?купили(?:\s+(?:это|его|этот\s+товар|эту\s+позицию))?|где\s+куплено|supplier|vendor|поставщик)/iu.test(
|
||
value
|
||
)
|
||
) {
|
||
return true;
|
||
}
|
||
return hasInventoryPurchaseStem(value) && /(?:у\s+кого|от\s+кого|где)/iu.test(value);
|
||
}
|
||
|
||
export function hasInventorySaleCue(text: string): boolean {
|
||
const value = toText(text);
|
||
if (/(?:buyer|покупател)/iu.test(value)) {
|
||
return true;
|
||
}
|
||
if (/(?:куда\s+ушла\s+позиция|куда\s+ушел\s+товар|кто\s+купил)/iu.test(value)) {
|
||
return true;
|
||
}
|
||
const hasDirectionCue = /(?:кому|каму|куда)/iu.test(value);
|
||
const hasSaleVerb =
|
||
/(?:продал(?:и|а|о|ы)?|продан(?:а|о|ы)?|продано|реализовал(?:и|а|о|ы)?|реализован(?:а|о|ы)?|реализовано)/iu.test(
|
||
value
|
||
);
|
||
if (hasDirectionCue && hasSaleVerb) {
|
||
return true;
|
||
}
|
||
return /(?:^|[\s,.;:!?])(продано|продали|продан(?:а|о|ы)?|реализовано|реализовали|реализован(?:а|о|ы)?)(?=$|[\s,.;:!?])/iu.test(
|
||
value
|
||
);
|
||
}
|