csv export fix

This commit is contained in:
Rainer Gümpelein 2022-01-14 19:41:45 +01:00
parent 4262462fc8
commit 597284c6a9
4 changed files with 23 additions and 54 deletions

View file

@ -1354,8 +1354,8 @@ sub search_json(){
#my $sth = $dbh->prepare("SELECT ct.ct_name || ' , Lager ' || ct.txt12 AS label, ct.ct_name AS value, ct.c_id FROM content ct WHERE $sel"); #my $sth = $dbh->prepare("SELECT ct.ct_name || ' , Lager ' || ct.txt12 AS label, ct.ct_name AS value, ct.c_id FROM content ct WHERE $sel");
#If select only mandant specific warenstamm #If select only mandant specific warenstamm
if($varenv{waren_main_id}){ if($dbt->{shareedms_conf}->{waren}){
my $main_ids = &collect_noderec("",$varenv{waren_main_id},$lang,"nothing"); my $main_ids = &collect_noderec("",$dbt->{shareedms_conf}->{waren},$lang,"nothing");
$sth = $dbh->prepare("SELECT ct.ct_name || ' , ' || ct.barcode || ' , ' || ct.txt12 AS value, ct.ct_name AS spart_ct_name, ct.c_id FROM $table ct, relation rel WHERE ct.c_id=rel.content_id and rel.main_id IN ($main_ids) and $sel $sel2"); $sth = $dbh->prepare("SELECT ct.ct_name || ' , ' || ct.barcode || ' , ' || ct.txt12 AS value, ct.ct_name AS spart_ct_name, ct.c_id FROM $table ct, relation rel WHERE ct.c_id=rel.content_id and rel.main_id IN ($main_ids) and $sel $sel2");
}else{ }else{
$sth = $dbh->prepare("SELECT ct.ct_name || ' , ' || ct.barcode || ' , ' || ct.txt12 AS value, ct.ct_name AS spart_ct_name, ct.c_id FROM $table ct WHERE $sel $sel2"); $sth = $dbh->prepare("SELECT ct.ct_name || ' , ' || ct.barcode || ' , ' || ct.txt12 AS value, ct.ct_name AS spart_ct_name, ct.c_id FROM $table ct WHERE $sel $sel2");
@ -1376,7 +1376,7 @@ sub search_json(){
sub search_content3(){ sub search_content3(){
my $self = shift; my $self = shift;
my ($searchref,$table,$mandant_id,$trans_module,$owner,$lang,$main_ids,$tplids,$ct_ids,$v_journal,$time,$kontext,$scol,$sort_updown,$offset,$limit,$export,$todo,$ck4ex,$opos) = @_; my ($searchref,$table,$mandant_id,$node_meta,$owner,$lang,$main_ids,$tplids,$ct_ids,$v_journal,$time,$kontext,$scol,$sort_updown,$offset,$limit,$export,$todo,$ck4ex,$opos) = @_;
$main_ids =~ s/,$//; $main_ids =~ s/,$//;
$tplids =~ s/,$//; $tplids =~ s/,$//;
@ -1388,7 +1388,7 @@ sub search_content3(){
open(FILE,">>$varenv{logdir}/Liste3.log") if($debug); open(FILE,">>$varenv{logdir}/Liste3.log") if($debug);
print FILE "*** $stamp_time Libenzdb.search_content3 ***\n" if($debug); print FILE "*** $stamp_time Libenzdb.search_content3 ***\n" if($debug);
print FILE Dumper($searchref) if($debug); print FILE Dumper($searchref) if($debug);
print FILE "$table,$mandant_id,$trans_module,$owner,$lang,$main_ids,$tplids,$ct_ids,$v_journal,$time,$kontext,$scol,$sort_updown,$offset,$limit,$export,$todo,$ck4ex,$opos\n" if($debug); print FILE "$table,$mandant_id,$node_meta->{node_name},$owner,$lang,$main_ids,$tplids,$ct_ids,$v_journal,$time,$kontext,$scol,$sort_updown,$offset,$limit,$export,$todo,$ck4ex,$opos\n" if($debug);
close(FILE) if($debug); close(FILE) if($debug);
@ -1565,33 +1565,16 @@ sub search_content3(){
#save_query #save_query
#my $save_query = $q->escapeHTML("$txt_where"); #my $save_query = $q->escapeHTML("$txt_where");
#&users_up("","windowtask",$save_query,$owner);
#CSV/FiBu Export### #CSV/FiBu Export###
if($export && (("$kontext" ne "Waren" && "$export" ne "FiBu" && $v_journal !~ /_parts/) || ("$export" eq "FiBu" && $v_journal =~ /_parts/) || ("$kontext" eq "Waren" && $v_journal =~ /_parts/))){ if($export && (("$kontext" ne "Waren" && "$export" ne "FiBu" && $v_journal !~ /_parts/) || ("$export" eq "FiBu" && $v_journal =~ /_parts/) || ("$kontext" eq "Waren" && $v_journal =~ /_parts/))){
#print "$v_journal,$time,$kontext,$export<br>"; #print "$v_journal,$time,$kontext,$export<br>";
my $ctf = &get_content1("","contentuser","$mandant_id"); my $ctf = &get_content1("","contentuser","$mandant_id");
my $tpl_id = $1 if($tplids =~ /(\d+)/); my @tpl_order = split /,/,$node_meta->{tpl_order};
#my $source = "Waren";
my $source = $trans_module;
if($v_journal){
$tpl_id = $ctf->{txt26} if($trans_module eq "Verkauf");
$tpl_id = $ctf->{txt27} if($trans_module eq "Einkauf");
$tpl_id = $ctf->{txt28} if($trans_module =~ /Faktur|Verleih/);
$source = "Waren" if($v_journal =~ /_parts/);
}
my $tpl = &Libenzdb::get_tpl("",$tpl_id);
my @tpl_order = split /,/,$tpl->{tpl_order};
#wg. Buchungsgruppen bzw. Ursprung-nodes (int12) --> Konten im FiBu Export #wg. Buchungsgruppen bzw. Ursprung-nodes (int12) --> Konten im FiBu Export
my $users = &get_content4owner("","users",$owner); my $colmain_ids = &collect_noderec("",$node_meta->{main_id},$lang,"999999");
my $cmain_id = $users->{fullurl};#changed in jvbasel to actual main_id
if($cmain_id =~ /[a-zA-Z]/){
my $b_node = &get_node2("",$users->{fullurl},$source,$lang);
$cmain_id = $b_node->{main_id};
}
my $colmain_ids = &collect_noderec("",$cmain_id,$lang,"999999");
my $nodes = &Libenzdb::collect_node2("","$colmain_ids"); my $nodes = &Libenzdb::collect_node2("","$colmain_ids");
my $ctt;my $ctadr;my $aw_ids; my $ctt;my $ctadr;my $aw_ids;
my $what; my $what;
@ -1642,7 +1625,7 @@ sub search_content3(){
} keys(%$search)){ } keys(%$search)){
my $s_main_id = "$search->{$id}->{main_id}"; my $s_main_id = "$search->{$id}->{main_id}";
$s_main_id = "$search->{$id}->{int12}" if(($v_journal && ($v_journal =~ /_parts/)) || ($trans_module =~ /Verkauf|Faktur|Verleih/)); $s_main_id = "$search->{$id}->{int12}" if(($v_journal && ($v_journal =~ /_parts/)) || ($node_meta->{node_name} eq "Faktura"));
#lxfibu vars #lxfibu vars
my ($l_soll,$l_umsatz,$l_ustnr,$l_haben,$l_gvc,$l_beldat,$l_beleg,$l_opbeleg,$l_skonto,$l_kostnr,$l_text,$l_text2); my ($l_soll,$l_umsatz,$l_ustnr,$l_haben,$l_gvc,$l_beldat,$l_beleg,$l_opbeleg,$l_skonto,$l_kostnr,$l_text,$l_text2);
@ -1686,7 +1669,6 @@ sub search_content3(){
#Nodes alias Buchungsgruppen parameter #Nodes alias Buchungsgruppen parameter
foreach my $nid (keys (%$nodes)){ foreach my $nid (keys (%$nodes)){
if($s_main_id == $nodes->{$nid}->{main_id}){ if($s_main_id == $nodes->{$nid}->{main_id}){
#print "$s_main_id == $nodes->{$nid}->{main_id} $nodes->{$nid}->{node_name} $trans_module<br>";
$line = "$nodes->{$nid}->{node_name}"; $line = "$nodes->{$nid}->{node_name}";
$l_text = "$nodes->{$nid}->{node_name}"; $l_text = "$nodes->{$nid}->{node_name}";
@ -1703,21 +1685,7 @@ sub search_content3(){
#template definition in src/Tpl/EditMeta.pm #template definition in src/Tpl/EditMeta.pm
my $ustnr; my $ustnr;
if($trans_module eq "Einkauf"){ if($node_meta->{node_name} eq "Faktura"){
$ustnr = $nodes->{$nid}->{int04};
$ustnr = $ctf->{txt14} if($nodes->{$nid}->{int04} !~ /\d/);
$l_soll = $nodes->{$nid}->{int02};#Aufwandskonto???
$l_soll = $ctf->{txt15} if($nodes->{$nid}->{int02} !~ /\d/);
}
if($trans_module eq "Verkauf"){
$ustnr = $nodes->{$nid}->{int03};
$ustnr = $ctf->{txt13} if($nodes->{$nid}->{int03} !~ /\d/);
$l_haben = $nodes->{$nid}->{int01};#Verkauf Erlöskonto
$l_haben = $ctf->{txt16} if($nodes->{$nid}->{int01} !~ /\d/);
#sollte nicht mur an 999 geknüpft sein, sondern Warengruppen ...
#$l_soll = "$nodes->{$nid}->{int02}" if($search->{$id}->{ct_name} eq "999");
}
if($trans_module =~ /Faktur|Verleih/){
$ustnr = $nodes->{$nid}->{int03};#Verkauf = Verleih Umst $ustnr = $nodes->{$nid}->{int03};#Verkauf = Verleih Umst
$ustnr = $ctf->{txt13} if($nodes->{$nid}->{int03} !~ /\d/); $ustnr = $ctf->{txt13} if($nodes->{$nid}->{int03} !~ /\d/);
$l_haben = $nodes->{$nid}->{int07};#Verleih Erlöskonto $l_haben = $nodes->{$nid}->{int07};#Verleih Erlöskonto
@ -1792,14 +1760,6 @@ sub search_content3(){
close CSV; close CSV;
&csv2xls("",$owner,$time) if($export =~ /check4|FiBu/); &csv2xls("",$owner,$time) if($export =~ /check4|FiBu/);
#if($export eq "check4html"){
# foreach my $id (keys (%$search)){
# $c_ids .= "$search->{$id}->{c_id},";
# }
# $c_ids =~ s/,$//;
# &export2html("","$table","$c_ids","$main_ids","$tpl_id","$owner","$time");
#}
}#end CSV/FiBu Export#### }#end CSV/FiBu Export####
# #

View file

@ -19,6 +19,7 @@ use Mod::APIfunc;
use Digest::MD5 qw(md5 md5_hex); use Digest::MD5 qw(md5 md5_hex);
use Digest::SHA qw(sha1_base64); use Digest::SHA qw(sha1_base64);
use Scalar::Util qw(looks_like_number); use Scalar::Util qw(looks_like_number);
use URI::Encode;
use Mod::Prelib; use Mod::Prelib;
use Mod::Basework; use Mod::Basework;
use Mod::Payment; use Mod::Payment;
@ -39,6 +40,7 @@ my $payone = new Payment;
my $smstrans = new SMSTransport; my $smstrans = new SMSTransport;
my $q = new CGI; my $q = new CGI;
my $uri_encode = URI::Encode->new( { encode_reserved => 1 } );
sub new { sub new {
my $class = shift; my $class = shift;
@ -274,6 +276,7 @@ sub save_account(){
$txt17{$ctadr->{txt17}} = 1; $txt17{$ctadr->{txt17}} = 1;
} }
#TODO, check if merchant_id for KN and set $bonus_prefix
if($valxx && ($valxx =~ /^(\w{2,3})-(\w+)/ || $valxx =~ /^(\w{2,3})(\d+)/)){ if($valxx && ($valxx =~ /^(\w{2,3})-(\w+)/ || $valxx =~ /^(\w{2,3})(\d+)/)){
$valxx =~ s/\s//g; $valxx =~ s/\s//g;
my $bonus_prefix = uc($1), my $bonus_prefix = uc($1),
@ -292,6 +295,10 @@ sub save_account(){
ct_name => "$bonusnr", ct_name => "$bonusnr",
}; };
my $bonus_record = $dbt->fetch_record($dbh_operator,$pref_bo); my $bonus_record = $dbt->fetch_record($dbh_operator,$pref_bo);
if(!$bonus_record->{c_id} && $operator_conf->{database}->{dbname} eq "sharee_kn"){
my $swk_code = "";
$swk_code = $lb->grep_filecontent("$varenv{basedir}/ftp/SWK_codes/got_last.csv","$bonusnr");
}
#add operators dbname only if Bonusnr matches #add operators dbname only if Bonusnr matches
print FILE "txt15=$bonusnr requested on web Bonustarif on: $operator_conf->{database}->{dbname} --> barcode:$bonus_record->{barcode} --> txt21:$bonus_record->{int21} --> txt22:$bonus_record->{int22}\n" if($debug); print FILE "txt15=$bonusnr requested on web Bonustarif on: $operator_conf->{database}->{dbname} --> barcode:$bonus_record->{barcode} --> txt21:$bonus_record->{int21} --> txt22:$bonus_record->{int22}\n" if($debug);
@ -332,7 +339,7 @@ sub save_account(){
owner => $owner, owner => $owner,
ret => $ret, ret => $ret,
}; };
print FILE "adr_bonus" . Dumper($adr_bonus) . "\n"; print FILE "adr_bonus preview which will be set if matches\n" . Dumper($adr_bonus) . "\n";
$ret = $pl->set_usertarif($dbh,$operator_conf->{database}->{dbname},$adr_bonus); $ret = $pl->set_usertarif($dbh,$operator_conf->{database}->{dbname},$adr_bonus);
} }
}else{ }else{
@ -373,7 +380,8 @@ sub save_account(){
$lastnum = $1 if($valxx =~ /(\d{9})$/); $lastnum = $1 if($valxx =~ /(\d{9})$/);
my $phone_check = &check_account("","txt07","~",$lastnum,"c_id","!=",$c_id); my $phone_check = &check_account("","txt07","~",$lastnum,"c_id","!=",$c_id);
if($phone_check->{c_id} && $phone_check->{c_id} != $c_id){ if($phone_check->{c_id} && $phone_check->{c_id} != $c_id){
$ret_conflict = "failure::conflict_$_=$valxx#top"; my $encoded_val = $uri_encode->encode($valxx);
$ret_conflict = "failure::conflict_$_=$encoded_val#top";
} }
#smsAck reset #smsAck reset
if($valxx ne $ctadr->{txt07}){ if($valxx ne $ctadr->{txt07}){
@ -394,7 +402,8 @@ sub save_account(){
my $account_check = &check_account("","txt08","ilike",$valxx,"c_id","!=",$c_id); my $account_check = &check_account("","txt08","ilike",$valxx,"c_id","!=",$c_id);
print FILE "$account_check->{c_id} && $account_check->{c_id} != $c_id\n" if($debug); print FILE "$account_check->{c_id} && $account_check->{c_id} != $c_id\n" if($debug);
if($account_check->{c_id} && $account_check->{c_id} != $c_id){ if($account_check->{c_id} && $account_check->{c_id} != $c_id){
$ret_conflict = "failure::conflict_$_=$valxx#top"; my $encoded_val = $uri_encode->encode($valxx);
$ret_conflict = "failure::conflict_$_=$encoded_val#top";
} }
#mailAck reset #mailAck reset
if($valxx ne $ctadr->{txt08}){ if($valxx ne $ctadr->{txt08}){

View file

@ -467,7 +467,7 @@ sub tpl(){
} }
# #
my $v_journalparts = $v_journal . "_parts"; my $v_journalparts = $v_journal . "_parts";
$ct4rel_parts = $db->search_content3($searchref,$table,$dbt->{shareedms_conf}->{parent_id},$node_meta->{node_name},$users_dms->{u_id},$lang,"$main_ids","$tplids","$ct_ids",$v_journalparts,$time,$R::s_kontext,$scol,$users_dms->{sort_updown},$offset,$limit,$export,$R::todo,$ck4ex,$opos); $ct4rel_parts = $db->search_content3($searchref,$table,$dbt->{shareedms_conf}->{parent_id},$node_meta,$users_dms->{u_id},$lang,"$main_ids","$tplids","$ct_ids",$v_journalparts,$time,$R::s_kontext,$scol,$users_dms->{sort_updown},$offset,$limit,$export,$R::todo,$ck4ex,$opos);
#collect invoice ids in kontext of parts #collect invoice ids in kontext of parts
foreach my $cp_id (keys (%$ct4rel_parts)){ foreach my $cp_id (keys (%$ct4rel_parts)){
@ -479,7 +479,7 @@ sub tpl(){
} }
} }
$ct4rel = $db->search_content3($searchref,$table,$dbt->{shareedms_conf}->{parent_id},$node_meta->{node_name},$users_dms->{owner},$lang,"$main_ids","$tplids","$ct_ids",$v_journal,$time,$R::s_kontext,$scol,$users_dms->{sort_updown},$offset,$limit,$export,$R::todo,$ck4ex,$opos); $ct4rel = $db->search_content3($searchref,$table,$dbt->{shareedms_conf}->{parent_id},$node_meta,$users_dms->{u_id},$lang,"$main_ids","$tplids","$ct_ids",$v_journal,$time,$R::s_kontext,$scol,$users_dms->{sort_updown},$offset,$limit,$export,$R::todo,$ck4ex,$opos);
}#end $ct4rel collect }#end $ct4rel collect
}else{ }else{
$return = "failure::Abbruch. Keine Zugriffsberechtigung"; $return = "failure::Abbruch. Keine Zugriffsberechtigung";

View file

@ -215,7 +215,7 @@ EOF
my $ck4ex = ""; my $ck4ex = "";
#only if permission read #only if permission read
if(($node_meta->{ct_table} eq "users" && $users_dms->{int07} >= 1) || ($node_meta->{ct_table} eq "contentadrpos" && $users_dms->{int02} >= 1) || ($node_meta->{ct_table} eq "contentpos" && $users_dms->{int01} >= 1)){ if(($node_meta->{ct_table} eq "users" && $users_dms->{int07} >= 1) || ($node_meta->{ct_table} eq "contentadrpos" && $users_dms->{int02} >= 1) || ($node_meta->{ct_table} eq "contentpos" && $users_dms->{int01} >= 1)){
$ct4rel = $db->search_content3($searchref,$table,$node_mandant->{parent_id},"",$users_dms->{u_id},$lang,"$main_ids","$tpl_ids","","",$time,"",$scol,$users_dms->{sort_updown},$offset,$limit,$export,$todo,$ck4ex,""); $ct4rel = $db->search_content3($searchref,$table,$node_mandant->{parent_id},$node_meta,$users_dms->{u_id},$lang,"$main_ids","$tpl_ids","","",$time,"",$scol,$users_dms->{sort_updown},$offset,$limit,$export,$todo,$ck4ex,"");
}else{ }else{
$return = "failure::Abbruch. Keine Zugriffsberechtigung"; $return = "failure::Abbruch. Keine Zugriffsberechtigung";
} }