Files
SGF/scripts/ledger-cycle-setup.php
2026-11-04 09:37:20 +02:00

11 lines
2.3 KiB
PHP

<?php
use Tempo\Finance\GeneralLedger\CycleSchema;
use Tempo\Finance\Payables\{SettlementSchema,ReversalSchema};
CycleSchema::install(DB::connection());SettlementSchema::install();ReversalSchema::install();
DB::statement('ALTER TABLE permission_grants DROP CONSTRAINT permission_grants_scope_check');
DB::statement("ALTER TABLE permission_grants ADD CONSTRAINT permission_grants_scope_check CHECK ((unit_id IS NULL AND permission='company.view') OR (unit_id IS NOT NULL AND permission IN ('unit.view','supplier_payables.view','general_ledger.view','general_ledger.prepare','general_ledger.validate','general_ledger.post','general_ledger.correct_prepare','general_ledger.correct_validate','general_ledger.correct_post','general_ledger.period_prepare','general_ledger.period_validate','general_ledger.period_close')))");
foreach(['prepare'=>['correct_prepare','correct_post','period_prepare','period_close'],'validate'=>['correct_validate','period_validate']] as $role=>$actions)foreach($actions as $action)DB::table('permission_grants')->insert($scope+['user_id'=>$f['actors'][$role],'permission'=>'general_ledger.'.$action,'created_at'=>now(),'updated_at'=>now()]);
foreach(['prepare'=>['payments_view','payment_prepare','allocation_prepare','reversal_prepare'],'validate'=>['payments_view','payment_confirm','allocation_confirm','reversal_confirm'],'read'=>['payments_view']] as $role=>$actions)foreach($actions as $action)DB::table('pa_access')->insert($scope+['user_id'=>$f['actors'][$role],'action'=>$action,'person'=>'sgf-history-person-'.$f['actors'][$role]]);
$cash=DB::table('gl_accounts')->insertGetId($scope+['code'=>'QA-LIQUIDACAO','label'=>'Contrapartida artificial de liquidação; sem execução monetária','is_movement'=>true,'currency'=>'MZN']);
foreach(['QA-ALLOCATION'=>['allocation.confirmed',$credit,$cash],'QA-REVERSAL'=>['allocation.reversed',$cash,$credit],'QA-CORRECTION-REVERSE'=>['journal.reversal',$credit,$debit],'QA-CORRECTION-REPLACE'=>['journal.replacement',$debit,$credit]] as $key=>[$type,$d,$cId])DB::table('gl_rules')->insert($scope+$common+['rule_key'=>$key,'version'=>1,'policy'=>Tempo\Finance\GeneralLedger\PayableJournal::POLICY,'effect_type'=>$type,'currency'=>'MZN','valid_from'=>'2026-10-01','valid_to'=>'2026-10-31','debit_account_id'=>$d,'credit_account_id'=>$cId]);