From 4c11beb331e665a5723fbba8e8db18eee10b4c46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rainer=20G=C3=BCmpelein?= Date: Thu, 10 Feb 2022 16:45:22 +0100 Subject: [PATCH] saving column into invoices --- copri4/main/src/Mod/DBtank.pm | 6 +- copri4/main/src/Mod/Printpreview.pm | 184 ++++++---------- copri4/main/src/Mod/Shareework.pm | 12 +- copri4/main/src/Tpl/Address3.pm | 25 +-- copri4/main/src/Tpl/TransPositionen.pm | 205 +++++++++--------- copri4/main/src/scripts/payone_cron.pl | 11 +- copri4/shareeapp-operator/src/Tpl/FormEdit.pm | 62 +++--- 7 files changed, 222 insertions(+), 283 deletions(-) diff --git a/copri4/main/src/Mod/DBtank.pm b/copri4/main/src/Mod/DBtank.pm index 57bccee..a2f17be 100755 --- a/copri4/main/src/Mod/DBtank.pm +++ b/copri4/main/src/Mod/DBtank.pm @@ -68,7 +68,7 @@ sub dbconnect_extern { #while (my ($key, $value) = each %{ $self->{$instance_type} }) { while (my ($key, $value) = each %{ $globalconf{$instance_type} }) { if($key eq $dbname){ - $bw->log("dbconnect_XX",$value->{database},""); + $bw->log("dbconnect_XX",$value->{database}->{dbname},""); my $database = "dbi:Pg:dbname=$value->{database}->{dbname};host=$value->{database}->{host};port=$value->{database}->{port};options='$value->{database}->{options}'"; $database .= ";sslmode=$value->{database}->{sslmode}" if($value->{database}->{sslmode} && $value->{database}->{host} ne "localhost"); my $dbh = DBI->connect($database, $value->{database}->{user}, $value->{database}->{passwd},{ RaiseError => 0, AutoCommit => 1 }); @@ -730,6 +730,10 @@ sub fetch_tablerecord(){ $where .= " and $key $op '$value'"; }elsif($key =~ /_itime$/ && $value){ $where .= " and itime $op '$value'"; + }elsif($key =~ /start_mtime|end_mtime/ && $value){ + $key =~ s/start_mtime/mtime/; + $key =~ s/end_mtime/mtime/; + $where .= " and $key $op '$value'"; }elsif($key =~ /time$/ && $value && $value =~ /interval/){#<= (now() - interval '15 minutes') $where .= " and $key $op $value"; }elsif($key =~ /time$/ && $value){ diff --git a/copri4/main/src/Mod/Printpreview.pm b/copri4/main/src/Mod/Printpreview.pm index 7a53cbf..c3f63b5 100755 --- a/copri4/main/src/Mod/Printpreview.pm +++ b/copri4/main/src/Mod/Printpreview.pm @@ -19,6 +19,7 @@ use Lib::Config; use Mod::Buttons; use Mod::Libenz; use Mod::Libenzdb; +use Mod::Pricing; sub new { my $class = shift; @@ -33,6 +34,8 @@ sub printpre(){ my $lb = new Libenz; my $db = new Libenzdb; my $but = new Buttons; + my $pri = new Pricing; + my %varenv = $cf->envonline(); my $path = $q->path_info(); my $script = $q->script_name(); @@ -149,8 +152,6 @@ td { my $ctf = $db->get_content1("contentuser","$mandant_main_id"); $ctf->{txt13} = $1 if($ctf->{txt13} =~ /(\d+)/); - my $tpl = $db->get_tpl($ctf->{txt34});#Verkauf template - $tpl = $db->get_tpl($ctf->{txt36}) if($users->{kind_of_trans} =~ /Faktur/); my $ctt = $db->get_content1("contenttrans",$c_id); #payone Bank @@ -170,9 +171,9 @@ td { my $mtime = $lb->time4de("$invoice_time",""); $db->updater("contenttrans","c_id",$ctt->{c_id},"invoice_time","$invoice_time",""); - # - my $scol = "c_id"; - #$scol = "$users->{cash_sort}" if($users->{cash_sort}); + + #my $scol = "c_id"; + my $scol = "itime"; my $i=0; my $tplf = $db->get_tpl("201");#Firma tpl my @tplf_order = split /,/,$tplf->{tpl_order}; @@ -208,7 +209,7 @@ td { &data_invoice("0",$vendor,$kd_nr,$mandat_nr,$ctt->{txt00},$ct_name2print,$mtime); #table - my ($sum_paid,$break_table_wc,$nullcount) = &data_table("0",$c_id,$scol,"",$mandant_main_id,$users->{kind_of_trans},$tpl->{tpl_order},"0",$max_table_wc,$ctt); + my ($sum_paid,$break_table_wc,$nullcount) = &data_table("0",$c_id,$scol,"",$mandant_main_id,"0",$max_table_wc,$ctt); #print "$site_all++ if(($wc > $max_site_wc) || ($table_wc > $max_table_wc)) --> $break_table_wc"; #$site_all++ if(($wc > $max_site_wc) || ($table_wc > $max_table_wc)); @@ -220,7 +221,7 @@ td { print PMA "$site_all,$footer_top,$site,$site_all,$wc\n"; if($site_all == 1){ - &text_description("0",$mandant_main_id,$ctt->{txt21},$ctt->{txt12},$users->{kind_of_trans},$ctt->{txt00},$nullcount); + &text_description("0",$mandant_main_id,$ctt->{txt21},$ctt->{txt12},$ctt->{txt00},$nullcount); &text_footer($mandant_main_id,$footer_top,$site,$site_all,$wc,$footer_bank,$logo); }else{ &text_footer($mandant_main_id,$footer_top,$site,$site_all,$wc,$footer_bank,$logo); @@ -236,13 +237,13 @@ td { $h_top +=60; #table_break if($break_table_wc >= $max_table_wc){ - my ($sum_paid,$exit_table_wc,$nullcount) = &data_table($h_top,$c_id,$scol,"",$mandant_main_id,$users->{kind_of_trans},$tpl->{tpl_order},$break_table_wc,$max_table_wc,$ctt,$sum_paid); + my ($sum_paid,$exit_table_wc,$nullcount) = &data_table($h_top,$c_id,$scol,"",$mandant_main_id,$break_table_wc,$max_table_wc,$ctt,$sum_paid); $h_top += ($table_wc - $max_table_wc) * 65; print PMA "h_top: $h_top += ($table_wc - $max_table_wc) * 65\n"; } #print "$h_top | $table_wc | $break_table_wc >= $max_table_wc"; - &text_description($h_top,$mandant_main_id,$ctt->{txt21},$ctt->{txt12},$users->{kind_of_trans},$ctt->{txt00},$nullcount); + &text_description($h_top,$mandant_main_id,$ctt->{txt21},$ctt->{txt12},$ctt->{txt00},$nullcount); $footer_top +=130; $site++; print PMA "$site_all,$footer_top,$site,$site_all,$wc\n"; @@ -338,10 +339,9 @@ td { } sub data_table(){ - my ($h_top,$c_id,$scol,$ctt_dummy,$mandant_main_id,$kind_of_trans,$tpl_order,$break_table_wc,$max_table_wc,$ctt,$sum_break) = @_; + my ($h_top,$c_id,$scol,$ctt_dummy,$mandant_main_id,$break_table_wc,$max_table_wc,$ctt,$sum_break) = @_; $ctf = $db->get_content1("contentuser","$mandant_main_id"); - - my $umst1619 = $lb->umst_breaking($ctt,""); + #my $umst1619 = $lb->umst_breaking($ctt,""); my $txt20 = $ctt->{txt20}; my $max_timestamp = "210001012359"; @@ -354,14 +354,20 @@ td { } my $max_sum = $ctf->{int03} || "10000"; + my @tpl_order = ("txt01=Beschreibung","ct_name=Nummer","date_time=Mietzeit","int03=Menge","int02=Preis","int07=Rabatt","int04=Gesamt"); my ($cttpos,$rows) = $db->collect_contentpos("contenttrans",$c_id); + foreach my $id (keys(%$cttpos)){ + if($cttpos->{$id}->{int26}){ + @tpl_order = ("txt01=Beschreibung","ct_name=Nummer","date_time=Mietzeit","int26=Einsparung","int03=Menge","int02=Preis","int07=Rabatt","int04=Gesamt"); + } + } + my $h_toppx = "$h_top" . "px"; my $position; $position = "position:absolute; top: $h_toppx;" if($h_top); print "\n
\n"; print $q->start_table({ -border=>'0', -width=>'100%',-align=>'center', -cellpadding=>'3', -cellspacing=>'0'}),"\n"; - my @tpl_order = split /,/,$tpl_order; #Tableheader my $h=0; @@ -371,13 +377,7 @@ td { $h++ if($val && $key !~ /int07/); print $q->th({-class=>'tdint'},"$val"),"\n" if("$key" eq "ct_name"); print $q->th({-class=>'tdtxt2'},"$val"),"\n" if($key =~ /txt01/); - print $q->th({-class=>'tdint'},"$val"),"\n" if($key =~ /int03/); - if($ctt->{txt00} =~ /Lieferschein/){ - print $q->th(""),"\n" if($key =~ /int02|int03/); - }else{ - print $q->th({-class=>'tdint'},"$val"),"\n" if($key =~ /int02/); - print $q->th({-class=>'tdint'},"$val"),"\n" if($key =~ /int04/); - } + print $q->th({-class=>'tdint'},"$val"),"\n" if($key =~ /int02|int03|int04|int26/); } $h--; @@ -398,39 +398,23 @@ td { } #Tablecontent (ct_name(primary key)) - my $sum_parts0=0; - my $sum_parts7=0; my $sum_parts19=0; my $j=0; my $k=0; my $nullcount=0; - foreach my $id (sort { $cttpos->{$a}->{$scol} <=> $cttpos->{$b}->{$scol} } keys(%$cttpos)){ + #foreach my $id (sort { $cttpos->{$a}->{$scol} <=> $cttpos->{$b}->{$scol} } keys(%$cttpos)){ + foreach my $id (sort { $cttpos->{$b}->{$scol} cmp $cttpos->{$a}->{$scol} } keys(%$cttpos)){ my $cttpos_timestamp = $1 . $2 . $3 . "0000" if($cttpos->{$id}->{itime} =~ /(\d+)\-(\d+)\-(\d+)/); - #$k++; - my $menge="0";my $gesamt="0";my $kaution="0";my $gesamt_kaution="0"; - my $timeing="0";my $times;my $rent_time;my $start_time;my $end_time; - #Mietzeit wenn Verleihräder - if($kind_of_trans =~ /Faktur|Verleih/ && $cttpos->{$id}->{int12} =~ /$ctf->{txt29}/){ - $timeing="1"; - $times = $db->get_time4ct("contenttranspos",$cttpos->{$id}->{c_id}); - $start_time = $lb->time4de($times->{start_time},"1"); - $end_time = $lb->time4de($times->{end_time},"1"); - } + my $gesamt = 0; + my $rabatt = ""; my $einzel = $cttpos->{$id}->{int02}; my $menge = $cttpos->{$id}->{int03} || 0; my $unit = $cttpos->{$id}->{txt03}; - #start copri pricing on 2018-03-21 - my $dt1 = DateTime->new(year => 2018, month => 3, day => 20); - my $dt0 = $dt1; - my $dt2 = $dt1; - $dt0 = DateTime::Format::Pg->parse_datetime($cttpos->{$id}->{start_time}) if($cttpos->{$id}->{start_time}); - $dt2 = DateTime::Format::Pg->parse_datetime($cttpos->{$id}->{end_time}) if($cttpos->{$id}->{end_time}); - - if(looks_like_number($einzel) && $einzel != 0 && looks_like_number($menge) && $menge != 0){ - $gesamt = $einzel * $menge; - } + ($gesamt,$rabatt) = $pri->price2calc($cttpos->{$id}); + $gesamt = $lb->round($gesamt); + $gesamt = $lb->cashme($gesamt,","); #max. Rechnungspositionen if(($gesamt == 0) && ($cttpos_timestamp <= $max_timestamp || $ctt->{int05} == 1) && ($sum_parts19 <= $max_sum)){ @@ -441,25 +425,10 @@ td { $j++; if($j<=$max_table_wc || $break_table_wc){ - - my $rabatt_val = $cttpos->{$id}->{int07} || ""; - if($rabatt_val != 0 && looks_like_number($einzel) && $einzel != 0 && looks_like_number($menge) && $menge != 0){ - my $rabatt_eur = $rabatt_val; - $rabatt_eur = $einzel * $menge * $rabatt_val/100 if($cttpos->{$id}->{int08} != 1);#wenn int08 != 1 alias € - $gesamt = $einzel * $menge - $rabatt_eur; - } - $gesamt = $lb->round($gesamt); - $gesamt = $lb->cashme($gesamt); - #summieren - if("$cttpos->{$id}->{int05}" =~ /\d/){ - $sum_parts0 += $gesamt if("$cttpos->{$id}->{int05}" == "0"); - $sum_parts7 += $gesamt if("$cttpos->{$id}->{int05}" == "7"); - $sum_parts19 += $gesamt if("$cttpos->{$id}->{int05}" >= "16"); - }else{ - $sum_parts0 += $gesamt if("$ctf->{txt13}" == "0"); - $sum_parts7 += $gesamt if("$ctf->{txt13}" == "7"); - $sum_parts19 += $gesamt if($ctf->{txt13} >= 16); - } + ($gesamt,$rabatt) = $pri->price2calc($cttpos->{$id}); + $sum_parts19 += $gesamt; + $gesamt = $lb->round($gesamt); + $gesamt = $lb->cashme($gesamt,","); #2. empty loop for sum if($break_table_wc){ @@ -467,13 +436,6 @@ td { next if($j<=$max_table_wc); } - my ($s_date,$s_dd,$s_mo,$s_yy,$s_hh,$s_mi,$e_date,$e_yy,$e_mo,$e_dd,$e_hh,$e_mi,$times_id); - - #Make date and time - if($cttpos->{$id}->{start_time} && $cttpos->{$id}->{end_time}){ - ($s_yy,$s_mo,$s_dd,$s_hh,$s_mi) = $lb->split_date($cttpos->{$id}->{start_time}); - ($e_yy,$e_mo,$e_dd,$e_hh,$e_mi) = $lb->split_date($cttpos->{$id}->{end_time}); - } #Tablecontent (parameter) print $q->Tr(),"\n"; @@ -481,9 +443,6 @@ td { foreach (@tpl_order){ #$k++; my ($key,$val) = split /=/,$_; - #if($cttpos->{$id}->{sort} =~ /^\d+$/){ - # $txtstyle = "border-bottom-width:1px;border-bottom-style:dotted;border-bottom-color:silver;"; - #} $cttpos->{$id}->{$key} = $q->unescapeHTML("$cttpos->{$id}->{$key}"); $cttpos->{$id}->{$key} = $lb->newline($cttpos->{$id}->{$key},""); if("$key" eq "ct_name"){ @@ -502,31 +461,40 @@ td { $cttpos->{$id}->{$key} =~ s/\
/;   /g; print "$cttpos->{$id}->{$key}
\n"; } - #if($cttpos->{$id}->{int04}){ - # print $q->span("Station: $cttpos->{$id}->{int04}"),"\n"; - #} - #if($cttpos->{$id}->{txt06}){ - # print $q->span(" (GPS: $cttpos->{$id}->{txt06})"),"\n"; - #} - if($cttpos->{$id}->{start_time}){ + if($cttpos->{$id}->{start_time} && $cttpos->{$id}->{end_time}){ #print "
\n"; - print $q->span("Mietzeit: $s_dd.$s_mo.$s_yy $s_hh:$s_mi – $e_dd.$e_mo.$e_yy $e_hh:$e_mi"),"\n"; + $cttpos->{$id}->{start_time} = $lb->time4de($cttpos->{$id}->{start_time},"1"); + $cttpos->{$id}->{end_time} = $lb->time4de($cttpos->{$id}->{end_time},"1"); + + print $q->span("Mietzeit: $cttpos->{$id}->{start_time} – $cttpos->{$id}->{end_time}"),"\n"; } print "\n"; } - + if($key eq "int26"){ + my $co2saving = ""; + if($cttpos->{$id}->{int26}){ + $co2saving = "Einsparung
"; + my $co2diff = $pri->co2calc($cttpos->{$id}); + my $sprit_price = $pri->sprit2calc($cttpos->{$id}); + $co2saving .= "$co2diff kg CO²
"; + $co2saving .= "$sprit_price EUR
"; + $cttpos->{$id}->{int26} =~ s/\./,/; + $co2saving .= "bei $cttpos->{$id}->{int26} KM"; + } + print $q->td({-class=>'tdint'},"$co2saving"); + } if($key =~ /int03/){ - $menge =~ s/\./,/; - print $q->td({-class=>'tdint'},"$menge"),"\n"; + $cttpos->{$id}->{$key} =~ s/\./,/; + print $q->td({-class=>'tdint'},"$cttpos->{$id}->{$key}"),"\n"; } if($key =~ /int02/){ - if($einzel == "0"){ - $einzel=""; + if($cttpos->{$id}->{$key} == "0"){ + $cttpos->{$id}->{$key}=""; }else{ - $einzel =~ s/\./,/; + $cttpos->{$id}->{$key} =~ s/\./,/; } - print $q->td({-nowrap=>'1',-class=>'tdint'},"$einzel"),"\n"; + print $q->td({-nowrap=>'1',-class=>'tdint'},"$cttpos->{$id}->{$key}"),"\n"; } if($key =~ /int04/){ @@ -536,11 +504,10 @@ td { $gesamt .= " €"; $gesamt =~ s/\./,/; } - #if($rabatt_val != 0 && $gesamt != 0){ - if($rabatt_val != 0){ + if($rabatt != 0){ my $proz="%"; $proz = "€" if($cttpos->{$id}->{int08} == 1); - print $q->td({-nowrap=>'1',-class=>'tdint'},"(Rabatt $rabatt_val $proz) $gesamt"),"\n"; + print $q->td({-nowrap=>'1',-class=>'tdint'},"(Rabatt $rabatt $proz) $gesamt"),"\n"; }else{ print $q->td({-nowrap=>'1',-class=>'tdint'},"$gesamt"),"\n"; } @@ -569,34 +536,24 @@ td { } - my $diff7 = 100 + 7; - my $diff19 = 100 + $umst1619; - my $sum_umst7 = $sum_parts7 / $diff7 * 7; - my $sum_umst19 = $sum_parts19 / $diff19 * $umst1619; - $sum_umst7 = $lb->round($sum_umst7); + my $diff19 = 100 + 19; + my $sum_umst19 = $sum_parts19 / $diff19 * 19; $sum_umst19 = $lb->round($sum_umst19); - my $sum_netto7 = $sum_parts7 - $sum_umst7; my $sum_netto19 = $sum_parts19 - $sum_umst19; - $sum_netto7 = $lb->cashme($sum_netto7); $sum_netto19 = $lb->cashme($sum_netto19); - my $sum_nettoall = $sum_parts0 + $sum_netto7 + $sum_netto19; + my $sum_nettoall = $sum_netto19; $sum_nettoall = $lb->cashme($sum_nettoall,","); - my $sum_paid = $sum_parts0 + $sum_parts7 + $sum_parts19; - $sum_parts0 = $lb->cashme($sum_parts0,","); - $sum_parts7 = $lb->cashme($sum_parts7,","); + my $sum_paid = $sum_parts19; $sum_parts19 = $lb->cashme($sum_parts19,","); - $sum_umst7 = $lb->cashme($sum_umst7,","); $sum_umst19 = $lb->cashme($sum_umst19,","); $sum_paid = $lb->cashme($sum_paid,","); - if($ctt->{txt00} !~ /Lieferschein/){ - print $q->Tr(),"\n"; - print $q->td({-class=>'Oline',-colspan=>5}," "),"\n"; + print $q->td({-class=>'Oline',-colspan=>6}," "),"\n"; print "\n"; - print "$payment_text\n"; + print "$payment_text\n"; print "\n"; print $q->start_table({-style=>'border:1px solid silver;', -border=>'0', -width=>'100%',-align=>'center', -cellpadding=>'3', -cellspacing=>'0'}),"\n"; @@ -612,19 +569,9 @@ td { print $q->Tr(),"\n"; print $q->td({-class=>'tdint'},"Betrag Netto:"),"\n"; print $q->td({-class=>'tdint',-nowrap=>"1"},"$sum_nettoall €"),"\n"; - if($sum_parts0 != "0"){ - print $q->Tr(),"\n"; - print $q->td({-class=>'tdint',-nowrap=>"1"},"0% UmSt auf $sum_parts0 €:"),"\n"; - print $q->td({-class=>'tdint',-nowrap=>"1"},"0,00 €"),"\n"; - } - if($sum_netto7 != "0"){ - print $q->Tr(),"\n"; - print $q->td({-class=>'tdint',-nowrap=>"1"},"7% UmSt auf $sum_netto7 €:"),"\n"; - print $q->td({-class=>'tdint',-nowrap=>"1"},"$sum_umst7 €"),"\n"; - } if($sum_parts19 != "0"){ print $q->Tr(); - print $q->td({-class=>'tdint',-nowrap=>"1"},"$umst1619% UmSt auf $sum_netto19 €:"),"\n"; + print $q->td({-class=>'tdint',-nowrap=>"1"},"19% UmSt auf $sum_netto19 €:"),"\n"; print $q->td({-class=>'tdint',-nowrap=>"1"},"$sum_umst19 €"),"\n"; } } @@ -639,7 +586,6 @@ td { print $q->end_table,"\n"; print "\n"; print "\n"; - } print $q->end_table,"\n"; print "
\n"; @@ -648,7 +594,7 @@ td { #Beschreibungs-Text sub text_description(){ - my ($h_top,$mandant_main_id,$ctt_txt21,$ctt_txt12,$kind_of_trans,$node_name,$nullcount) = @_; + my ($h_top,$mandant_main_id,$ctt_txt21,$ctt_txt12,$node_name,$nullcount) = @_; my $ctf = $db->get_content1("contentuser","$mandant_main_id"); my $position; my $h_toppx = "$h_top" . "px"; diff --git a/copri4/main/src/Mod/Shareework.pm b/copri4/main/src/Mod/Shareework.pm index 6b05216..975aa07 100755 --- a/copri4/main/src/Mod/Shareework.pm +++ b/copri4/main/src/Mod/Shareework.pm @@ -675,7 +675,7 @@ sub save_transact(){ fetch => "one", template_id => "224", int03 => ">::0", - ct_name => "$coupon_nr", + ct_name => "ilike::$coupon_nr", }; my $ct = { c_id => 0 }; $ct = $dbt->fetch_record($dbh_operator,$pref_co); @@ -715,6 +715,7 @@ sub save_transact(){ my $ctt = { c_id => 0 }; $ctt = $dbt->fetch_record($dbh_operator,$pref); if($ctt->{c_id} > 0){ + #TODO, fetch coupon in user context to restrict mass inserts $pos_id = $dbt->insert_pos($dbh_operator,$ctt->{c_id},$ct,$ctadr_operator,"",$now_dt,$ct->{ct_name},"0",$owner); }else{ my $ct_id = $dbt->insert_contenttrans($dbh_operator,$ctadr_operator,"300008","218","----",$owner); @@ -840,14 +841,15 @@ sub net_booking(){ # 4 = "hidden-lv" # if($tariff_content->{$id}->{int18} && ($tariff_content->{$id}->{int18} == 2 || $tariff_content->{$id}->{int18} == 3 || $tariff_content->{$id}->{int18} == 4)){ + #auto set tarif if requested bike matches flot if($tariff_content->{$id}->{int12} && $tariff_content->{$id}->{int12} == $ct->{main_id} && $tariff_content->{$id}->{barcode}){ $bw->log("2. net_booking tariff loop matches:",$tariff_content->{$id}->{barcode},""); $tariff_nr = $tariff_content->{$id}->{barcode}; push(@txt30, "$tariff_content->{$id}->{barcode}"); - } - #if($tariff_content->{$id}->{int12} && $tariff_content->{$id}->{barcode}){ - # push(@txt30, "$tariff_content->{$id}->{barcode}"); - #} + }#add also other public tarif + elsif($tariff_content->{$id}->{int18} && $tariff_content->{$id}->{int18} == 2 && $tariff_content->{$id}->{int12} && $tariff_content->{$id}->{barcode}){ + push(@txt30, "$tariff_content->{$id}->{barcode}"); + } } } $bw->log("--> NO user tariff defined, update user account to fallback default public or private or hidden",\@txt30,""); diff --git a/copri4/main/src/Tpl/Address3.pm b/copri4/main/src/Tpl/Address3.pm index afa4fe6..17b9ff1 100755 --- a/copri4/main/src/Tpl/Address3.pm +++ b/copri4/main/src/Tpl/Address3.pm @@ -26,7 +26,10 @@ sub new { #Template sub tpl(){ - my ($node_meta,$users_dms,$return) = @_; + my $node_meta = shift; + my $users_dms = shift; + my $return = shift || ""; + my $q = new CGI; my $cf = new Config; my $lb = new Libenz; @@ -36,23 +39,14 @@ sub tpl(){ my $transp = new TransPositionen; my %varenv = $cf->envonline(); my $lang = "de"; - - my $user_agent = $q->user_agent(); my %ib = $but->ibuttons(); - my $line_count1; + my $line_count1 = 0; #get Firma my $ctf = $db->get_content1("contentuser",$dbt->{shareedms_conf}->{parent_id}); - #print Dumper($users_dms) . "if($R::c_id4trans && $node_meta->{tpl_id} && $users_dms->{u_id} > 0)\n"; my $rel4tpl = $db->get_rel4tpl("",$lang,$users_dms->{c_id4trans},$node_meta->{tpl_id}); - my @tpl_order = split /,/,$rel4tpl->{tpl_order}; - my $node = $db->get_node4multi($node_meta->{main_id},$lang) if($node_meta->{main_id}); - if(!$node->{main_id} && $users_dms->{u_id}){ - $db->update_users4trans("0","0",$R::kind_of_trans,$users_dms->{u_id}); - $users_dms = $db->select_users($users_dms->{u_id}); - } my $ctx = { c_id => 0 }; $ctx = $db->get_content1("contenttrans",$users_dms->{c_id4trans}); @@ -102,16 +96,16 @@ EOF ; my $main_id = $rel4tpl->{main_id} || $ctx->{int12}; - my $set_main_id = $ctf->{txt22}; + my $set_main_id = $dbt->{shareedms_conf}->{invoice}; my @formular_relations=("$set_main_id:Typ auswählen ..."); my @workflow_relations=("$set_main_id:Typ auswählen ..."); my $nodes = $db->collect_node($dbt->{shareedms_conf}->{faktura}, "$lang"); - my $depends = "irgendeinzeichen"; + my $depends = "nothingelse"; #$depends = "Storno" if(!$ctx->{close_time}); foreach my $id (sort { $nodes->{$a}->{node_name} cmp $nodes->{$b}->{node_name} } keys (%$nodes)){ push (@formular_relations, "$id:$nodes->{$id}->{node_path}") if(($main_id eq $id) || ($nodes->{$id}->{node_path} !~ /journal|bericht|offen|Storno|Vorauszahlungsrechnung|letzte|langzeit|OPOS|$depends/)); - push (@workflow_relations, "$id:$nodes->{$id}->{node_path}") if($nodes->{$id}->{node_path} !~ /journal|bericht|offen|Schlussrechnung|letzte|langzeit|OPOS|$node->{node_name}$|$ctx->{txt00}|$depends/); + push (@workflow_relations, "$id:$nodes->{$id}->{node_path}") if($nodes->{$id}->{node_path} !~ /journal|bericht|offen|Schlussrechnung|letzte|langzeit|OPOS|$node_meta->{node_name}$|$ctx->{txt00}|$depends/); } print "\n
\n"; @@ -177,7 +171,6 @@ EOF print $q->hidden(-name=>'limit', -override=>'1', -value=>"$R::limit"); print $q->hidden(-name=>'relids', -override=>'1', -value=>"$R::relids"); print $q->hidden(-name=>'ct_name4workflow', -override=>1, -value=>"$ctx->{ct_name}"); - print $q->hidden(-name=>'p_template', -override=>'1', -value=>"$node->{node_path}"); print $q->hidden(-name=>'c_id4trans', -override=>'1', -value=>"$ctx->{c_id}"); print $q->hidden(-name=>'c_id4copy', -override=>'1', -value=>"$ctx->{c_id}"); print $q->hidden(-name=>'close_time', -override=>'1', -value=>"$ctx->{close_time}"); @@ -353,7 +346,7 @@ EOF print "\n"; #require "Tpl/TransPositionen.pm"; - my $line_count2 = $transp->tpl($node_meta,$users_dms,$set_main_id,$rel4tpl->{main_id},$rel4tpl->{rel_id},$rel4tpl->{content_id},$lang,"$return","$node->{node_name}"); + my $line_count2 = $transp->tpl($node_meta,$users_dms,$set_main_id,$rel4tpl,$return); print "\n"; ###end Edit Parts diff --git a/copri4/main/src/Tpl/TransPositionen.pm b/copri4/main/src/Tpl/TransPositionen.pm index b42d6c4..edd1a29 100755 --- a/copri4/main/src/Tpl/TransPositionen.pm +++ b/copri4/main/src/Tpl/TransPositionen.pm @@ -20,6 +20,7 @@ use Mod::Libenz; use Mod::Libenzdb; use Mod::DBtank; use Mod::APIfunc; +use Mod::Pricing; sub new { my $class = shift; @@ -30,8 +31,13 @@ sub new { #Template sub tpl(){ - my $self=shift; - my ($node_meta,$users_dms,$set_main_id,$main_id,$rel_id,$c_id,$lang,$return,$node_name) = @_; + my $self = shift; + my $node_meta = shift; + my $users_dms = shift; + my $set_main_id = shift; + my $rel4tpl = shift; + my $return = shift || ""; + my $q = new CGI; my $cf = new Config; my $lb = new Libenz; @@ -39,15 +45,8 @@ sub tpl(){ my $dbt = new DBtank; my $apif = new APIfunc; my $but = new Buttons; + my $pri = new Pricing; my %varenv = $cf->envonline(); - my $script = $q->script_name(); - my $path_info = $q->path_info(); - my $path = $path_info; - #with meta_host, - if("$varenv{metahost}"){ - $path = "$script" . "$path_info"; - $script=""; - } my %ib = $but->ibuttons(); my $today = strftime("%d.%m.%Y",localtime(time)); my $dbh = ""; @@ -62,17 +61,15 @@ sub tpl(){ my $c_idpos = $R::c_idpos || $R::pos_id || ""; my $ctf = $db->get_content1("contentuser",$dbt->{shareedms_conf}->{parent_id}); - my $ctt = $db->get_content1("contenttrans",$c_id); - - my $umst1619 = $lb->umst_breaking($ctt,""); + my $ctt = $db->get_content1("contenttrans",$rel4tpl->{content_id}); + #my $umst1619 = $lb->umst_breaking($ctt,""); my $ctadr = $db->get_content1("contentadr",$ctt->{int10}); my $buchen_mtime = $lb->time4de($ctt->{mtime}); my $vibuchen_mtime = ""; $vibuchen_mtime = "Payone post " . $lb->time4de($ctt->{pay_time},1) . " . " if($ctt->{pay_time}); - my $tpl = $db->get_tpl("208"); - my @tpl_order = split /,/,$tpl->{tpl_order}; + my @tpl_order = ("txt01=Beschreibung","ct_name=Nummer","date_time=Mietzeit","int03=Menge","int02=Preis","int07=Rabatt","int04=Gesamt"); my $tplf = $db->get_tpl("201");#Firma tpl my @tplf_order = split /,/,$tplf->{tpl_order}; @@ -87,7 +84,14 @@ sub tpl(){ my $max_sum = $ctf->{int03} || "10000"; my $cttpos = { c_id => 0 }; my $rows = 0; - ($cttpos,$rows) = $db->collect_contentpos("contenttrans",$c_id);# if($c_id); + ($cttpos,$rows) = $db->collect_contentpos("contenttrans",$rel4tpl->{content_id}); + + foreach my $id (keys(%$cttpos)){ + if($cttpos->{$id}->{int26}){ + @tpl_order = ("txt01=Beschreibung","ct_name=Nummer","date_time=Mietzeit","int26=Einsparung","int03=Menge","int02=Preis","int07=Rabatt","int04=Gesamt"); + } + } + if($varenv{orga} eq "dms"){#obsolete after migrating lx-rad and mobile ... print<div({ -class=>"ui-widget"}, $q->label({ -for=>"birds"},"Birds: "),$q->input({ -id=>"birds"},"")),"\n"; print $q->start_table({-class=>'list', -border=>'0', -width=>'100%',-align=>'left', -cellpadding=>'3', -cellspacing=>'0'}); - - #my $action_sort = "itime"; #Parts Header print $q->start_form(-name=>'spartform'); - print $q->Tr(); $line_count2++; - print $q->th($but->singlesubmit("select_part","*"),"\n"); - foreach (@tpl_order){ - my ($key,$val) = split /=/,$_; - $k++ if($val); - if("$key" eq "ct_name"){ - my $ctpos; - print $q->hidden(-name=>'c_id4trans', -override=>'1', -value=>"$c_id"); - print $q->hidden(-name=>'tpl_id4trans', -override=>'1', -value=>"$node_meta->{tpl_id}"); - print $q->hidden(-id=>'c_id', -name=>"c_id", -override=>'1'); - print $q->hidden(-id=>'spart_ct_name', -name=>"spart_ct_name", -override=>'1'); - print $q->th($q->textfield(-class=>'etxt',-style=>'height:19px;width:140px;font-size:1.3em;text-align:right;',-id=>"json_select",-name=>"json_select",-value=>"", -override=>'1',-size=>"25",-maxlength=>50, -placeholder=>'Nummer'),""); - } - if($key =~ /int03/){ - print $q->th("$val"); - }elsif($key =~ /int|txt03/){ - print $q->th("$val"); - }elsif($key =~ /txt01/){ - - my $cal_button = ""; - my $ter_button = ""; - my $war_button = ""; - print $q->th("Beschreibung"),"\n"; - - }elsif($key =~ /txt/){ - print $q->th("$val"); - } - } $c_idpos = $1 if($return && $return =~ /pos_id=(\d+)/); print $q->hidden(-name=>'trans2edit', -value=>"transpos", -override=>'1'); print $q->hidden(-name=>'offset', -override=>'1', -value=>"$R::offset") if($R::offset); print $q->hidden(-name=>'limit', -override=>'1', -value=>"$R::limit") if($R::limit); print $q->hidden(-name=>'relids', -override=>'1', -value=>"$R::relids") if($R::relids); + print $q->hidden(-name=>'c_id4trans', -override=>'1', -value=>"$rel4tpl->{content_id}"); + print $q->hidden(-name=>'tpl_id4trans', -override=>'1', -value=>"$node_meta->{tpl_id}"); + print $q->hidden(-id=>'c_id', -name=>"c_id", -override=>'1'); + print $q->hidden(-id=>'spart_ct_name', -name=>"spart_ct_name", -override=>'1'); + + $line_count2++; + print $q->Tr(); + print $q->th($but->singlesubmit("select_part","*"),"\n"); + foreach (@tpl_order){ + my ($key,$val) = split /=/,$_; + $k++ if($val); + if($key eq "ct_name"){ + print $q->th($q->textfield(-class=>'etxt',-style=>'height:19px;width:140px;font-size:1.3em;text-align:right;',-id=>"json_select",-name=>"json_select",-value=>"", -override=>'1',-size=>"25",-maxlength=>50, -placeholder=>'Nummer'),""); + }elsif($key =~ /int|txt/){ + print $q->th("$val"); + } + } + print $q->end_form,"\n"; print $q->start_form(-name=>'transposform'),"\n"; @@ -169,7 +160,8 @@ EOF my $sum_parts7=0; my $sum_parts19=0; my $diff7 = 100 + 7; - my $diff19 = 100 + $umst1619; + #my $diff19 = 100 + $umst1619; + my $diff19 = 100 + 19; my $sum_umst7=0; my $sum_umst19=0; my $i=0; @@ -179,7 +171,6 @@ EOF #foreach my $id (sort { $cttpos->{$b}->{$scol} <=> $cttpos->{$a}->{$scol} } keys(%$cttpos)){ foreach my $id (sort { $cttpos->{$b}->{$scol} cmp $cttpos->{$a}->{$scol} } keys(%$cttpos)){ my $set_style=""; - my $gesamt="0"; my $occupied_style = ""; my $time_style = ""; #$occupied_style = "color:#ff1493" if($cttpos->{$id}->{txt10} =~ /occupied|requested|canceled/); @@ -202,44 +193,13 @@ EOF $line_count2++; #$line_count2 += scalar(@line_txt01); } - my ($s_date,$s_dd,$s_mo,$s_yy,$s_hh,$s_mi,$e_date,$e_yy,$e_mo,$e_dd,$e_hh,$e_mi); - my $einzel = $cttpos->{$id}->{int02}; - my $menge = $cttpos->{$id}->{int03} || 0; - #Make date and time - if($cttpos->{$id}->{start_time} && $cttpos->{$id}->{end_time}){ - ($s_yy,$s_mo,$s_dd,$s_hh,$s_mi) = $lb->split_date($cttpos->{$id}->{start_time}); - ($e_yy,$e_mo,$e_dd,$e_hh,$e_mi) = $lb->split_date($cttpos->{$id}->{end_time}); - } - - - my $dt1 = DateTime->new(year => 2018, month => 3, day => 20); - my $dt0 = $dt1; - my $dt2 = $dt1; - $dt0 = DateTime::Format::Pg->parse_datetime($cttpos->{$id}->{start_time}) if($cttpos->{$id}->{start_time}); - $dt2 = DateTime::Format::Pg->parse_datetime($cttpos->{$id}->{end_time}) if($cttpos->{$id}->{end_time}); - #if($dt2 < $dt0){ - #$time_style="color:red;"; - #} - - if(looks_like_number($einzel) && $einzel != 0 && looks_like_number($menge) && $menge != 0){ - $gesamt = $einzel * $menge; - - my $rabatt_val = $cttpos->{$id}->{int07} || ""; - if($rabatt_val != 0){ - my $rabatt_eur = $rabatt_val; - $rabatt_eur = $einzel * $menge * $rabatt_val/100 if($cttpos->{$id}->{int08} != 1);#wenn int08 != 1 alias € - $gesamt = $einzel * $menge - $rabatt_eur; - } - } - - $gesamt = $lb->round($gesamt); - $gesamt = $lb->cashme($gesamt); - if($cttpos->{$id}->{int05} =~ /\d/){ - $sum_parts19 += $gesamt; - }else{ - $sum_parts19 += $gesamt; - } + my $gesamt = 0; + my $rabatt = ""; + ($gesamt,$rabatt) = $pri->price2calc($cttpos->{$id}); + $sum_parts19 += $gesamt; + $gesamt = $lb->round($gesamt); + $gesamt = $lb->cashme($gesamt,","); #1. Spalte print $q->Tr(),"\n"; @@ -247,12 +207,12 @@ EOF if(($c_idpos == $cttpos->{$id}->{c_id}) && ($R::trans2edit && $R::trans2edit =~ /transpos/)){ print $q->hidden(-name=>'c_idpos', -value=>"$cttpos->{$id}->{c_id}", -override=>'1'); print $q->hidden(-name=>'cc_id', -value=>"$cttpos->{$id}->{cc_id}", -override=>'1'); - print $q->hidden(-name=>'c_id4trans', -override=>'1', -value=>"$c_id"); + print $q->hidden(-name=>'c_id4trans', -override=>'1', -value=>"$rel4tpl->{content_id}"); print $q->hidden(-name=>'tpl_id4trans', -override=>'1', -value=>"$node_meta->{tpl_id}"); print $but->singlesubmit2("ct_trans","save_pos","$ib{save_pos}","","ebutton5"), $but->singlesubmit2("ct_trans","delete_pos","$ib{delete_pos}"),"\n"; }elsif(!$ctt->{close_time}){ - print $q->a({-class=>"editnav",-href=>"/DMS/Faktura?trans2edit=transpos\&c_idpos=$cttpos->{$id}->{c_id}\&c_id4trans=$c_id\&tpl_id4trans=$node_meta->{tpl_id}\&owner=$users_dms->{u_id}",-title=>"Datensatz bearbeiten"}, $q->img({-src=>"$varenv{metahost}/glyphicons/glyphicons-151-edit.png"})),"\n"; + print $q->a({-class=>"editnav",-href=>"/DMS/Faktura?trans2edit=transpos\&c_idpos=$cttpos->{$id}->{c_id}\&c_id4trans=$rel4tpl->{content_id}\&tpl_id4trans=$node_meta->{tpl_id}\&owner=$users_dms->{u_id}",-title=>"Datensatz bearbeiten"}, $q->img({-src=>"$varenv{metahost}/glyphicons/glyphicons-151-edit.png"})),"\n"; } my $calpath = "Mietjournal"; print $q->a({-class=>"linknav3", -style=>"background-color:$varenv{calendar_active_color}",-href=>"/DMS/$calpath/?cttpos_id=$cttpos->{$id}->{c_id}",-title=>"Im $calpath öffnen"},"

ID $cttpos->{$id}->{c_id}"),"\n"; @@ -274,10 +234,26 @@ EOF if(($c_idpos == $cttpos->{$id}->{c_id}) && ($R::trans2edit && $R::trans2edit =~ /transpos/)){ if($key =~ /ct_name/){ print $q->td({-class=>'element',-style=>"$set_style text-align:right;"}, $q->textfield(-class=>'etxt',-style=>"text-align:right;min-width:120px;",-name=>"ct_name",-default=>"$ct_pos", -override=>'1',-size=>10,-readonly=>'1'),"\n"); + }elsif($key eq "int26"){ + my $co2saving = ""; + if($cttpos->{$id}->{int26}){ + $co2saving = "Einsparung
"; + my $co2diff = $pri->co2calc($cttpos->{$id}); + my $sprit_price = $pri->sprit2calc($cttpos->{$id}); + $co2saving .= "$co2diff kg CO²
"; + $co2saving .= "$sprit_price EUR
"; + $cttpos->{$id}->{int26} =~ s/\./,/; + $co2saving .= "bei $cttpos->{$id}->{int26} KM"; + } + print $q->td({-class=>'tdint'},"$co2saving"); + }elsif($key =~ /int03/){ - print $q->td({-colspan=>'1',-class=>'element',-style=>"$txtstyle $set_style"},$q->textfield(-class=>'etxt',-style=>"$txtstyle",-name=>"col_$key",-default=>"$menge", -override=>'1',-size=>"$isize",-maxlength=>10, -autofocus=>1),"\n"); + #TODO, autocalc Menge Preis by time-range + #Menge + print $q->td({-colspan=>'1',-class=>'element',-style=>"$txtstyle $set_style"},$q->textfield(-class=>'etxt',-style=>"$txtstyle",-name=>"col_$key",-default=>"$cttpos->{$id}->{$key}", -override=>'1',-size=>"$isize",-maxlength=>10, -autofocus=>1),"\n"); }elsif($key =~ /int02/){ - print $q->td({-class=>'element',-style=>"$txtstyle $set_style"},$q->textfield(-class=>'etxt',-style=>"$txtstyle",-name=>"col_$key",-default=>"$einzel", -override=>'1',-size=>"$isize",-maxlength=>100),"\n"); + #Einzelpreis + print $q->td({-class=>'element',-style=>"$txtstyle $set_style"},$q->textfield(-class=>'etxt',-style=>"$txtstyle",-name=>"col_$key",-default=>"$cttpos->{$id}->{$key}", -override=>'1',-size=>"$isize",-maxlength=>100),"\n"); }elsif($key =~ /int07/){ print $q->td({-class=>'element',-style=>"$txtstyle $set_style",-nowrap=>'1'},$q->textfield(-class=>'etxt',-style=>"$txtstyle",-name=>"col_$key",-default=>"$cttpos->{$id}->{$key}", -override=>'1',-size=>"$isize",-maxlength=>100),$but->selector("int08","40px","$cttpos->{$id}->{int08}",("0.00:%","1.00:€"))),"\n"; }elsif($key =~ /int04/){ @@ -286,6 +262,10 @@ EOF if($cttpos->{$id}->{int09} && $cttpos->{$id}->{$key} !~ /Manuell/){ $cttpos->{$id}->{$key} .= "\nManuell bearbeitet\n"; } + + my ($s_yy,$s_mo,$s_dd,$s_hh,$s_mi) = $lb->split_date($cttpos->{$id}->{start_time}); + my ($e_yy,$e_mo,$e_dd,$e_hh,$e_mi) = $lb->split_date($cttpos->{$id}->{end_time}); + print ""; print $q->textarea(-class=>'autos',-style=>"border: 1px solid #ededed;background-color: #ededed;",-name=>"col_$key",-default=>"$cttpos->{$id}->{$key}", -override=>'1',-rows=>"1",-cols=>65),"
\n"; @@ -325,17 +305,28 @@ EOF }else{ print $q->td({-class=>'tdint'},"$article"),"\n"; } + }elsif($key eq "int26"){ + my $co2saving = ""; + if($cttpos->{$id}->{int26}){ + $co2saving = "Einsparung
"; + my $co2diff = $pri->co2calc($cttpos->{$id}); + my $sprit_price = $pri->sprit2calc($cttpos->{$id}); + $co2saving .= "$co2diff kg CO²
"; + $co2saving .= "$sprit_price EUR
"; + $cttpos->{$id}->{int26} =~ s/\./,/; + $co2saving .= "bei $cttpos->{$id}->{int26} KM"; + } + print $q->td({-class=>'tdint'},"$co2saving"); + }elsif($key =~ /int02/){ - $einzel =~ s/\./,/; - print $q->td({-class=>'tdint'},"$einzel"),"\n"; + $cttpos->{$id}->{$key} =~ s/\./,/; + print $q->td({-class=>'tdint'},"$cttpos->{$id}->{$key}"),"\n"; }elsif($key =~ /int03/){ - $menge =~ s/\./,/; - print $q->td({-colspan=>'1',-class=>'tdint'},"$menge"),"\n"; + $cttpos->{$id}->{$key} =~ s/\./,/; + print $q->td({-colspan=>'1',-class=>'tdint'},"$cttpos->{$id}->{$key}"),"\n"; }elsif($key =~ /int04/){ $gesamt =~ s/\./,/; print $q->td({-class=>'tdint',-nowrap=>"1"},"$gesamt €"),"\n"; - }elsif($key =~ /int02/){ - print $q->td({-class=>'tdint'},"$einzel"),"\n"; }elsif($key =~ /int07/){ my $proz=""; $proz = "%" if($cttpos->{$id}->{$key} && $cttpos->{$id}->{$key} != 0); @@ -380,9 +371,11 @@ EOF if($cttpos->{$id}->{int06} || $cttpos->{$id}->{int04}){ print $q->span("Start/End Station: $cttpos->{$id}->{int06} / $cttpos->{$id}->{int04}, GPS: $cttpos->{$id}->{txt06}"),"\n"; } - if($cttpos->{$id}->{start_time}){ + if($cttpos->{$id}->{start_time} && $cttpos->{$id}->{end_time}){ + $cttpos->{$id}->{start_time} = $lb->time4de($cttpos->{$id}->{start_time},"1"); + $cttpos->{$id}->{end_time} = $lb->time4de($cttpos->{$id}->{end_time},"1"); print "
\n"; - print $q->span({-style=>"$time_style"}, "Mietzeit: $s_dd.$s_mo.$s_yy $s_hh:$s_mi – $e_dd.$e_mo.$e_yy $e_hh:$e_mi"),"\n"; + print $q->span({-style=>"$time_style"}, "Mietzeit: $cttpos->{$id}->{start_time} – $cttpos->{$id}->{end_time}"),"\n"; } print "\n"; }elsif($key =~ /txt/){ @@ -400,7 +393,8 @@ EOF $sum_umst7 = $lb->round($sum_umst7); } if($sum_parts19 != "0"){ - $sum_umst19 = $sum_parts19 / $diff19 * $umst1619; + #$sum_umst19 = $sum_parts19 / $diff19 * $umst1619; + $sum_umst19 = $sum_parts19 / $diff19 * 19; $sum_umst19 = $lb->round($sum_umst19); } my $sum_netto7 = $sum_parts7 - $sum_umst7; @@ -449,7 +443,7 @@ EOF print $q->Tr("\n"); print $q->td(" "); - if($node_name !~ /steuerfrei/){ + if($node_meta->{node_name} !~ /steuerfrei/){ print $q->Tr("\n"); $line_count2++; print $q->td({-class=>'tdint'},"Nettobetrag:"); print $q->td({-class=>'tdint',-nowrap=>"1"},"$sum_nettoall €"); @@ -466,7 +460,8 @@ EOF } if($sum_netto19 != "0"){ print $q->Tr("\n");$line_count2++; - print $q->td({-class=>'tdint',-nowrap=>"1"},"$umst1619% UmSt auf $sum_netto19 €:"); + #print $q->td({-class=>'tdint',-nowrap=>"1"},"$umst1619% UmSt auf $sum_netto19 €:"); + print $q->td({-class=>'tdint',-nowrap=>"1"},"19% UmSt auf $sum_netto19 €:"); print $q->td({-class=>'tdint',-nowrap=>"1"},"$sum_umst19 €"); } } @@ -483,13 +478,13 @@ EOF print $q->hidden(-name=>'owner', -override=>'1', -value=>"$users_dms->{u_id}"); print $q->hidden(-name=>'offset', -override=>'1', -value=>"$R::offset") if($R::offset); - print $q->hidden(-name=>'c_id4trans', -override=>'1', -value=>"$c_id"); + print $q->hidden(-name=>'c_id4trans', -override=>'1', -value=>"$rel4tpl->{content_id}"); print $q->hidden(-name=>'tpl_id4trans', -override=>'1', -value=>"$node_meta->{tpl_id}"); print $q->hidden(-name=>'offset', -override=>'1', -value=>"$R::offset") if($R::offset); print $q->hidden(-name=>'limit', -override=>'1', -value=>"$R::limit") if($R::limit); print $q->hidden(-name=>'relids', -override=>'1', -value=>"$R::relids") if($R::relids); - $set_main_id=$main_id if($main_id && $main_id > "300000"); + $set_main_id=$rel4tpl->{main_id} if($rel4tpl->{main_id} && $rel4tpl->{main_id} > "300000"); print $q->hidden(-name=>'set_main_id', -value=>"$set_main_id", -override=>'1'); @@ -560,8 +555,8 @@ EOF print $q->div({-style=>"clear:both;padding:0.5em;font-size:0.81em;width:98%;text-align:right;color:green;"}, "Payone SEPA-Lastschrifteinzug war erfolgreich"),"\n"; } - $db->updater("contenttrans","c_id","$c_id","txt20","$accounting_start - $accounting_end","","","","","no_time") if(!$int05 && $accounting_start && $accounting_end); - $db->updater("contenttrans","c_id","$c_id","int15","$sum_preauth","","","","","no_time") if($sum_preauth || $sum_preauth == 0); + $db->updater("contenttrans","c_id","$rel4tpl->{content_id}","txt20","$accounting_start - $accounting_end","","","","","no_time") if(!$int05 && $accounting_start && $accounting_end); + $db->updater("contenttrans","c_id","$rel4tpl->{content_id}","int15","$sum_preauth","","","","","no_time") if($sum_preauth || $sum_preauth == 0); return "$line_count2"; } 1; diff --git a/copri4/main/src/scripts/payone_cron.pl b/copri4/main/src/scripts/payone_cron.pl index 05c9a0a..f0aa097 100755 --- a/copri4/main/src/scripts/payone_cron.pl +++ b/copri4/main/src/scripts/payone_cron.pl @@ -29,7 +29,7 @@ BEGIN { $syshost = $ARGV[0] || exit 1; } -use lib "/var/www/copri4/$syshost/src"; +use lib "/var/www/copri-bike/$syshost/src"; my $ctt_id = $ARGV[1] || ""; my $intervall = $ARGV[2] || "1"; @@ -45,7 +45,7 @@ use Data::Dumper; use Scalar::Util qw(looks_like_number); my $cf = new Config; -my %varenv = $cf->envonline("$syshost"); +my %varenv = $cf->envonline(); my $lb = new Libenz; my $dbt = new DBtank; my $pay = new Payment; @@ -93,7 +93,7 @@ my $dbh = $dbt->dbconnect(); print FILE "\n$i)** loop $now_dt ---> payone_cron select invoice ct.c_id:$ct4rel->{$id}->{c_id}| ca.c_id:$ct4rel->{$id}->{int10}| ct.ct_name:$ct4rel->{$id}->{ct_name}| ct.mtime:$ct4rel->{$id}->{mtime}\n"; if($ct4rel->{$id}->{int10} && !$ct4rel->{$id}->{txt22} && $ct4rel->{$id}->{ct_name} =~ /---|^\d+$/){ - my $umst1619 = $lb->umst_breaking($ct4rel->{$id},$now_dt); + #my $umst1619 = $lb->umst_breaking($ct4rel->{$id},$now_dt); #get Adresse from contentadr my $fetchadr = { @@ -119,9 +119,8 @@ my $dbh = $dbt->dbconnect(); my $sum_parts0=0; my $sum_parts7=0; my $sum_parts19=0; - my $sum_kaution=0; - my $diff7 = 100 + 7; - my $diff19 = 100 + $umst1619; + #my $diff19 = 100 + $umst1619; + my $diff19 = 100 + 19; my $sum_umst7=0; my $sum_umst19=0; my $j=0; diff --git a/copri4/shareeapp-operator/src/Tpl/FormEdit.pm b/copri4/shareeapp-operator/src/Tpl/FormEdit.pm index 4d5bf3c..52e3625 100755 --- a/copri4/shareeapp-operator/src/Tpl/FormEdit.pm +++ b/copri4/shareeapp-operator/src/Tpl/FormEdit.pm @@ -80,12 +80,12 @@ sub tpl(){ # #collect rentals on operators and get operator hash with dbname->uri_operator #$q->param(-name=>'month',-value=>"18");#disabled because changing to not invoiced positions - my ($ctpos,$operator_hash) = $apif->user_rentals_history($q,$ctrel); - #print Dumper($ctpos); + my ($cttpos,$operator_hash) = $apif->user_rentals_history($q,$ctrel); + #print Dumper($cttpos); - my $ctpos_count=0; - foreach my $id (keys(%$ctpos)){ - $ctpos_count++; + my $cttpos_count=0; + foreach my $id (keys(%$cttpos)){ + $cttpos_count++; } my $ctt_all = {}; @@ -312,9 +312,9 @@ Nach Abschluss der Registrierung erhalten Sie sowohl auf die von Ihnen hinterleg } print $q->div({-class=>'content2'}, "Nach der Mietradnutzung haben Sie hier die Möglichkeit die Mietvorgänge einzusehen und gebuchte Rechnungen als PDF herunterzuladen."),"\n"; print $q->div({-class=>'content2'}, "Ihre Bonusnummer wurde akzeptiert. Bitte beachten Sie dass der Bonustarif im Kontext des Mietradbetreibers vergeben wird. Der Tarif wird bei der Mietrad Reservierung angezeigt."),"\n" if($R::success && $R::success eq "txt15"); - print $q->div({-class=>'content2'}, "Aktuell liegen keine Buchungen vor."),"\n" if(!$ctpos_count); + print $q->div({-class=>'content2'}, "Aktuell liegen keine Buchungen vor."),"\n" if(!$cttpos_count); - }elsif($key =~ /barcode/ && $ctpos_count){ + }elsif($key =~ /barcode/ && $cttpos_count){ #print $q->div({-style=>'padding-top:1.5em;font-weight:bold;'},"Ihre Buchungsdaten der letzten 1 ½ Jahre im Überblick"),"\n"; print $q->div({-style=>'padding-top:1.5em;font-weight:bold;'},"Folgende Positionen liegen zur nächsten Abbuchung vor"),"\n"; @@ -328,7 +328,7 @@ Nach Abschluss der Registrierung erhalten Sie sowohl auf die von Ihnen hinterleg print $q->start_table({-style=>'margin:15px 0;', -border=>'0', -width=>'auto',-align=>'left', -cellpadding=>'3', -cellspacing=>'0'}),"\n"; print $q->Tr(),"\n"; - foreach my $id (sort { lc($ctpos->{$b}->{$scol}) cmp lc($ctpos->{$a}->{$scol}) } keys(%$ctpos)){ + foreach my $id (sort { lc($cttpos->{$b}->{$scol}) cmp lc($cttpos->{$a}->{$scol}) } keys(%$cttpos)){ $j++; $nx++; @@ -338,53 +338,53 @@ Nach Abschluss der Registrierung erhalten Sie sowohl auf die von Ihnen hinterleg my $occupied_style = "background-color:#fcfdfb;"; $occupied_style = "background-color:#f4f1ee;" if($nx %= 2); - #$occupied_style = "color:#ff1493;" if($ctpos->{$id}->{txt10} =~ /occupied|requested/); - $occupied_style = "color:#ff1493;" if($ctpos->{$id}->{int10} == 2 || $ctpos->{$id}->{int10} == 3); + #$occupied_style = "color:#ff1493;" if($cttpos->{$id}->{txt10} =~ /occupied|requested/); + $occupied_style = "color:#ff1493;" if($cttpos->{$id}->{int10} == 2 || $cttpos->{$id}->{int10} == 3); if($key eq "txt01"){ - #print $q->td({-class=>'tdtxt', -style=>"$occupied_style"},"$ctpos->{$id}->{$key}"); + #print $q->td({-class=>'tdtxt', -style=>"$occupied_style"},"$cttpos->{$id}->{$key}"); print "\n"; - if($ctpos->{$id}->{txt01}){ - $ctpos->{$id}->{$key} =~ s/\
/;   /g; - print "$ctpos->{$id}->{$key}
\n"; + if($cttpos->{$id}->{txt01}){ + $cttpos->{$id}->{$key} =~ s/\
/;   /g; + print "$cttpos->{$id}->{$key}
\n"; } - if($ctpos->{$id}->{start_time}){ - $ctpos->{$id}->{start_time} = $lb->time4de($ctpos->{$id}->{start_time},"1"); - $ctpos->{$id}->{end_time} = $lb->time4de($ctpos->{$id}->{end_time},"1"); - print $q->span("→ $ctpos->{$id}->{start_time}
← $ctpos->{$id}->{end_time}"); + if($cttpos->{$id}->{start_time} && $cttpos->{$id}->{end_time}){ + $cttpos->{$id}->{start_time} = $lb->time4de($cttpos->{$id}->{start_time},"1"); + $cttpos->{$id}->{end_time} = $lb->time4de($cttpos->{$id}->{end_time},"1"); + print $q->span("→ $cttpos->{$id}->{start_time}
← $cttpos->{$id}->{end_time}"); } print "\n"; }elsif($key =~ /int04/){ - if($ctpos->{$id}->{int09}){#if Tarifnr then bike - #print $q->td({-class=>'tdint', -style=>"$occupied_style"},"Station $ctpos->{$id}->{$key}"); + if($cttpos->{$id}->{int09}){#if Tarifnr then bike + #print $q->td({-class=>'tdint', -style=>"$occupied_style"},"Station $cttpos->{$id}->{$key}"); print "\n"; - print $q->span("Station
→ $ctpos->{$id}->{txt12}$ctpos->{$id}->{int06}
← $ctpos->{$id}->{txt13}$ctpos->{$id}->{int04}"); + print $q->span("Station
→ $cttpos->{$id}->{txt12}$cttpos->{$id}->{int06}
← $cttpos->{$id}->{txt13}$cttpos->{$id}->{int04}"); print "\n"; }else{ - print $q->td({-class=>'tdint', -style=>"$occupied_style"},"$ctpos->{$id}->{$key}"); + print $q->td({-class=>'tdint', -style=>"$occupied_style"},"$cttpos->{$id}->{$key}"); } }elsif($key =~ /ct_name/){ - if($ctpos->{$id}->{int09}){#if Tarifnr then bike - print $q->td({-class=>'tdint', -style=>"$occupied_style"},"Rad
$ctpos->{$id}->{$key}"); + if($cttpos->{$id}->{int09}){#if Tarifnr then bike + print $q->td({-class=>'tdint', -style=>"$occupied_style"},"Rad
$cttpos->{$id}->{$key}"); }else{ - print $q->td({-class=>'tdint', -style=>"$occupied_style"},"$ctpos->{$id}->{$key}"); + print $q->td({-class=>'tdint', -style=>"$occupied_style"},"$cttpos->{$id}->{$key}"); } }elsif($key eq "int26"){ my $co2saving = ""; - if($ctpos->{$id}->{int26}){ + if($cttpos->{$id}->{int26}){ $co2saving = "Einsparung
"; - my $co2diff = $pri->co2calc($ctpos->{$id}); - my $sprit_price = $pri->sprit2calc($ctpos->{$id}); + my $co2diff = $pri->co2calc($cttpos->{$id}); + my $sprit_price = $pri->sprit2calc($cttpos->{$id}); $co2saving .= "$co2diff kg CO²
"; $co2saving .= "$sprit_price EUR
"; - $ctpos->{$id}->{int26} =~ s/\./,/; - $co2saving .= "bei $ctpos->{$id}->{int26} KM"; + $cttpos->{$id}->{int26} =~ s/\./,/; + $co2saving .= "bei $cttpos->{$id}->{int26} KM"; } print $q->td({-class=>'tdint', -style=>"$occupied_style", -nowrap=>1},"$co2saving"); }elsif($key eq "int02"){ my $gesamt = 0; my $rabatt = ""; - ($gesamt,$rabatt) = $pri->price2calc($ctpos->{$id}); + ($gesamt,$rabatt) = $pri->price2calc($cttpos->{$id}); $sum += $gesamt; $gesamt = $lb->round($gesamt); $gesamt = $lb->cashme($gesamt,",");