Skip to content

Instantly share code, notes, and snippets.

@sheershoff
Created February 9, 2015 11:12
Show Gist options
  • Save sheershoff/66a8e5ce58ae7e043d4b to your computer and use it in GitHub Desktop.
Save sheershoff/66a8e5ce58ae7e043d4b to your computer and use it in GitHub Desktop.
kl_to_1c format reader, with exporter to elba kontur format
<?php
$i = 0;
$in = [];
$state['inDocSection'] = false;
function cmpget($l,$key){
if(strncmp($l,$key,strlen($key))!==false){
$v = substr($l,strlen($key));
return ($v[0]=='=')?substr($v,1):$v;
}else{
return false;
}
}
function get($line){
$t = explode('=',$line);
$r['key'] = $t[0];
unset($t[0]);
$r['value'] = implode('=',$t);
return $r;
}
$f=fopen('bank24_total_kl_to_1c.txt','r');
while(($l = fgets($f))!==FALSE){
$l = trim($l);
if($state['inDocSection']){
if($l=='КонецДокумента'){
$state['inDocSection'] = false;
if(@$in[$i]['ДатаПоступило']){
// постобработка для простоты вывода
$in[$i]['Поступило'] = $in[$i]['Сумма'];
$in[$i]['РеквизитыКонтрагента'] = $in[$i]['ПлательщикСчет'].' в '.$in[$i]['ПлательщикБанк1'];
$in[$i]['РеквизитыНаши'] = $in[$i]['ПолучательСчет'].' в '.$in[$i]['ПолучательБанк1'];
$in[$i]['Контрагент'] = $in[$i]['Плательщик1'];
}else{
$in[$i]['Списано'] = $in[$i]['Сумма'];
$in[$i]['РеквизитыКонтрагента'] = $in[$i]['ПолучательСчет'].' в '.$in[$i]['ПолучательБанк1'];
$in[$i]['РеквизитыНаши'] = $in[$i]['ПлательщикСчет'].' в '.$in[$i]['ПлательщикБанк1'];
$in[$i]['Контрагент'] = $in[$i]['Получатель1'];
}
if(($in[$i]['СекцияДокумент']=='Расчеты по банковским картам')){
$in[$i]['СекцияДокумент'] = 'Платежное поручение';
}
//print_r($in[$i]);
}else{
$t = get($l);
$in[$i][$t['key']] = $t['value'];
}
}else{
if($v = cmpget($l,'СекцияДокумент')){
$state['inDocSection'] = true;
$i++;
$in[$i]['СекцияДокумент'] = $v;
}
}
}
fclose($f);
$columns = [ // kontur elba mode
['key' => 'Дата', 'q'=>true, 'suffix' => ''],
['key' => 'n/a', 'q'=>true, 'suffix' => 'Без группы'],
['key' => 'Контрагент', 'q'=>true, 'suffix' => ''],
['key' => 'n/a', 'q'=>true, 'suffix' => 'Банк'],
['key' => 'СекцияДокумент', 'q'=>true, 'suffix' => ''],
['key' => 'Номер', 'q'=>true, 'prefix' => '№ '],
['key' => 'Поступило', 'q'=>false, 'suffix' => 'р'], // поступило
['key' => 'Списано', 'q'=>false, 'suffix' => 'р'], // списано
['key' => 'n/a', 'q'=>false, 'prefix' => ''], // учитывается
['key' => 'НазначениеПлатежа', 'q'=>true, 'prefix' => ''],
['key' => 'РеквизитыКонтрагента', 'q'=>true, 'prefix' => ''],
['key' => 'РеквизитыНаши', 'q'=>true, 'prefix' => ''],
];
echo "\n";
for(;$i>=0;$i--){
$r = $in[$i];
$s = [];
$ss = '';
foreach($columns as $k=>$v){
$ss = @$v['prefix'].str_replace('"','""',@$r[$v['key']]).@$v['suffix'];
if($v['q']) $ss = '"'.$ss.'"';
$s[]=$ss;
}
echo implode(',',$s)."\n";
}
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment