mirror of
https://github.com/frappe/books.git
synced 2024-12-25 20:11:15 +00:00
39 lines
959 B
TypeScript
39 lines
959 B
TypeScript
|
import { getPaddedName } from '@/utils';
|
||
|
import frappe from 'frappe';
|
||
|
import Doc from 'frappe/model/doc';
|
||
|
|
||
|
export default class NumberSeries extends Doc {
|
||
|
validate() {
|
||
|
const current = this.get('current') as number | null;
|
||
|
if (current) {
|
||
|
this.current = this.get('start');
|
||
|
}
|
||
|
}
|
||
|
|
||
|
async next(schemaName: string) {
|
||
|
this.validate();
|
||
|
|
||
|
const exists = await this.checkIfCurrentExists(schemaName);
|
||
|
if (!exists) {
|
||
|
return this.getPaddedName(this.current as number);
|
||
|
}
|
||
|
|
||
|
this.current = (this.current as number) + 1;
|
||
|
await this.update();
|
||
|
return this.getPaddedName(this.current as number);
|
||
|
}
|
||
|
|
||
|
async checkIfCurrentExists(schemaName: string) {
|
||
|
if (!schemaName) {
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
const name = this.getPaddedName(this.current as number);
|
||
|
return await frappe.db.exists(schemaName, name);
|
||
|
}
|
||
|
|
||
|
getPaddedName(next: number): string {
|
||
|
return getPaddedName(this.name, next, this.padZeros);
|
||
|
}
|
||
|
}
|