mdmsoft/yii2-autonumber

Auto number extension for the Yii framework

Installs: 28 390

Dependents: 8

Suggesters: 0

Security: 0

Stars: 17

Watchers: 7

Forks: 18

Open Issues: 1

Type:yii2-extension

1.5.2 2019-11-20 02:29 UTC

This package is not auto-updated.

Last update: 2024-12-21 15:29:20 UTC


README

Yii2 extension to genarete formated autonumber. It can be used for generate document number.

Installation

The preferred way to install this extension is through composer.

Either run

php composer.phar require --prefer-dist mdmsoft/yii2-autonumber "~1.0"

or add

"mdmsoft/yii2-autonumber": "~1.0"

to the require section of your composer.json file.

Usage

Prepare required table by execute yii migrate.

yii migrate --migrationPath=@mdm/autonumber/migrations

if wantn't use db migration. you can create required table manually.

CREATE TABLE auto_number (
    "group" varchar(32) NOT NULL,
    "number" int,
    optimistic_lock int,
    update_time int,
    PRIMARY KEY ("group")
);

Once the extension is installed, simply modify your ActiveRecord class:

public function behaviors()
{
    return [
        [
            'class' => 'mdm\autonumber\Behavior',
            'attribute' => 'sales_num', // required
    		'group' => $this->id_branch, // optional
    		'value' => 'SA.'.date('Y-m-d').'.?' , // format auto number. '?' will be replaced with generated number
    		'digit' => 4 // optional, default to null. 
    	],
    ];
}

// it will set value $model->sales_num as 'SA.2014-06-25.0001'

Instead of behavior, you can use this extension as validator

public function rules()
{
    return [
        [['sales_num'], 'autonumber', 'format'=>'SA.'.date('Y-m-d').'.?'],
        ...
    ];
}

New Format

Since version 1.5 we introduce new format of number. Now we use {} to evaluate as date and number of digit represented as number of ?.

public function rules()
{
    return [
        [['sales_num'], 'autonumber', 'format' => 'SA/{Y/m}/?.???'],
        ...
    ];
}

// it will set value $model->sales_num as 'SA/2019/10/0.001'


public function behaviors()
{
    return [
        [
            'class' => 'class' => 'mdm\autonumber\Behavior',
            'attribute' => 'sales_num', // required
            'value' => 'SA/{Y/m}/?.???'
        ]
    ];
}

// another usage

public function actionCreate()
{
    $model = new Sales()
    $model->load(Yii::$app->request->post());
    $model->sales_num = mdm\autonumber\AutoNumber::generate('SA/{Y/m}/?.???');
    ...
}