<?php

namespace App\Reports\Sources\BalancesList;

class ColumnsManager extends \App\Reports\Sources\ColumnsManagerAbstract
{

	/**
	 * The definition of report source columns.
	 * @var array
	 */
	protected array $columnsCfg = [
		'currentRowIndex'			=> [ 'type' => 'numeric',   'dbDef' => "INT UNSIGNED NOT NULL DEFAULT '0'",					'cat' => "general"],
		'bal_id'					=> [ 'type' => 'numeric', 	'dbDef' => "BIGINT UNSIGNED NOT NULL DEFAULT '0'", 				'cat' => "general"],
		'bal_number'				=> [ 'type' => 'string', 	'dbDef' => "VARCHAR(100) NOT NULL DEFAULT ''", 					'cat' => "general"],
		'bal_date'					=> [ 'type' => 'date', 		'dbDef' => "DATE NULL DEFAULT NULL", 							'cat' => "general"],
		'bal_dateY'					=> [ 'type' => 'year', 		'dbDef' => "YEAR NULL DEFAULT NULL", 							'cat' => "general"],
		'bal_dateYM'				=> [ 'type' => 'yearMonth', 'dbDef' => "DATE NULL DEFAULT NULL", 							'cat' => "general"],
		'bal_code'					=> [ 'type' => 'string', 	'dbDef' => "VARCHAR(50) NOT NULL DEFAULT ''", 					'cat' => "general"],
		'bal_name'					=> [ 'type' => 'string', 	'dbDef' => "VARCHAR(250) NOT NULL DEFAULT ''", 					'cat' => "general"],
		'bal_typeCode'				=> [ 'type' => 'string',	'dbDef' => "VARCHAR(10) NOT NULL DEFAULT ''", 					'cat' => "general"],
		'bal_typeName'				=> [ 'type' => 'string', 	'dbDef' => "VARCHAR(25) NOT NULL DEFAULT ''", 					'cat' => "general"],
		'bal_statusCode'			=> [ 'type' => 'string', 	'dbDef' => "VARCHAR(10) NOT NULL DEFAULT ''", 					'cat' => "general"],
		'bal_statusName'			=> [ 'type' => 'string', 	'dbDef' => "VARCHAR(25) NOT NULL DEFAULT ''", 					'cat' => "general"],
		'bal_virtualDate'			=> [ 'type' => 'date', 		'dbDef' => "DATE NULL DEFAULT NULL", 							'cat' => "general"],
		'bal_virtualDateY' 			=> [ 'type' => 'year', 		'dbDef' => "YEAR NULL DEFAULT NULL", 							'cat' => "general"],
		'bal_virtualDateYM' 		=> [ 'type' => 'yearMonth', 'dbDef' => "DATE NULL DEFAULT NULL", 							'cat' => "general"],
		'bal_generationType'		=> [ 'type' => 'string', 	'dbDef' => "ENUM ('manual', 'auto') NOT NULL DEFAULT 'manual'", 'cat' => "general"],
		'bal_confirmed'				=> [ 'type' => 'boolean', 	'dbDef' => "TINYINT UNSIGNED NOT NULL DEFAULT '0'", 			'cat' => "general"],
		'bal_comments'				=> [ 'type' => 'string', 	'dbDef' => "TEXT NOT NULL", 									'cat' => "general"],
		'bal_remarks' 				=> [ 'type' => 'string', 	'dbDef' => "TEXT NOT NULL", 									'cat' => "general"],
		'bal_processedRemarks'		=> [ 'type' => 'string', 	'dbDef' => "TEXT NOT NULL", 									'cat' => "general", 'disabled' => true, 'content' => 'remarks'],
		'bal_totalIncomeDefCurr'	=> [ 'type' => 'price',    	'dbDef' => "DECIMAL(16,3) NOT NULL DEFAULT '0'", 				'cat' => "general"],
		'bal_totalExpensesDefCurr'	=> [ 'type' => 'price',    	'dbDef' => "DECIMAL(16,3) NOT NULL DEFAULT '0'", 				'cat' => "general"],
		'bal_totalProfitDefCurr'	=> [ 'type' => 'price',    	'dbDef' => "DECIMAL(16,3) NOT NULL DEFAULT '0'", 				'cat' => "general"],
		'bal_profitPercent'			=> [ 'type' => 'percent',    'dbDef' => "DECIMAL(8,6) NOT NULL DEFAULT '0'", 				'cat' => "general"],

		'bal_userId' 			=> [ 'type' => 'numeric', 	'dbDef' => "SMALLINT UNSIGNED NOT NULL DEFAULT '0'", 				'cat' => "users"],
		'bal_userName' 			=> [ 'type' => 'string', 	'dbDef' => "VARCHAR(101) NOT NULL DEFAULT ''", 						'cat' => "users"],
		'bal_officeId' 			=> [ 'type' => 'numeric', 	'dbDef' => "SMALLINT UNSIGNED NOT NULL DEFAULT '0'", 				'cat' => "users"],
		'bal_officeName' 		=> [ 'type' => 'string', 	'dbDef' => "VARCHAR(100) NOT NULL DEFAULT ''", 						'cat' => "users"],
		'bal_deptId' 			=> [ 'type' => 'numeric', 	'dbDef' => "SMALLINT UNSIGNED NOT NULL DEFAULT '0'", 				'cat' => "users"],
		'bal_deptName' 			=> [ 'type' => 'string', 	'dbDef' => "VARCHAR(100) NOT NULL DEFAULT ''", 						'cat' => "users"],
		'bal_confirmUserId' 	=> [ 'type' => 'numeric', 	'dbDef' => "SMALLINT UNSIGNED NOT NULL DEFAULT '0'", 				'cat' => "users"],
		'bal_confirmUserName'	=> [ 'type' => 'string', 	'dbDef' => "VARCHAR(101) NOT NULL DEFAULT ''", 						'cat' => "users"],
		'bal_addUserId' 		=> [ 'type' => 'numeric', 	'dbDef' => "SMALLINT UNSIGNED NOT NULL DEFAULT '0'", 				'cat' => "users"],
		'bal_addUserName'		=> [ 'type' => 'string', 	'dbDef' => "VARCHAR(101) NOT NULL DEFAULT ''", 						'cat' => "users"],

		'bal_confirmTime' 		=> [ 'type' => 'datetime', 	'dbDef' => "DATETIME NULL DEFAULT NULL", 							'cat' => "operationTimes"],
		'bal_addTime' 			=> [ 'type' => 'datetime', 	'dbDef' => "DATETIME NULL DEFAULT NULL", 							'cat' => "operationTimes"],
	];

	/**
	 * The primary key column.
	 * @var string
	 */
	protected string $primaryKeyColumn = 'bal_id';

	/**
	 * The columns that are forced into the report.
	 * @var array
	 */
	protected array $forcedColumns = [];

	/**
	 * The columns dependencies list.
	 * @var array
	 */
	protected array $columnsDependencies = [
		'bal_userName'			=> ['bal_userId'],
		'bal_officeName'		=> ['bal_officeId'],
		'bal_deptName'			=> ['bal_deptId'],
		'bal_confirmUserName'	=> ['bal_confirmUserId'],
		'bal_addUserName'		=> ['bal_addUserId'],
		'bal_typeName'			=> ['bal_typeCode'],
		'bal_statusName'		=> ['bal_statusCode'],
	];


}