saving column into invoices

This commit is contained in:
Rainer Gümpelein 2022-02-10 16:45:22 +01:00
parent ba041a56b6
commit 4c11beb331
7 changed files with 222 additions and 283 deletions

View file

@ -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){

View file

@ -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<div style='width:$width;$position border:0px solid black;'>\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/\<br \/\>/; &nbsp; /g;
print "$cttpos->{$id}->{$key}<br />\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 "<br />\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 "</td>\n";
}
if($key eq "int26"){
my $co2saving = "";
if($cttpos->{$id}->{int26}){
$co2saving = "Einsparung</br>";
my $co2diff = $pri->co2calc($cttpos->{$id});
my $sprit_price = $pri->sprit2calc($cttpos->{$id});
$co2saving .= "$co2diff kg CO&sup2;<br />";
$co2saving .= "$sprit_price EUR<br />";
$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},"&nbsp;"),"\n";
print $q->td({-class=>'Oline',-colspan=>6},"&nbsp;"),"\n";
print "<tr>\n";
print "<td colspan='2' style='border:0px solid silver;vertical-align:top;padding:0.2em 0.5em;font-size:1em;'>$payment_text</td>\n";
print "<td colspan='3' style='border:0px solid silver;vertical-align:top;padding:0.2em 0.5em;font-size:1em;'>$payment_text</td>\n";
print "<td colspan='3' style='font-size:1em;'>\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 "</td>\n";
print "</tr>\n";
}
print $q->end_table,"\n";
print "</div>\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";

View file

@ -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"
#</sharing_type>
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,"");

View file

@ -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<div style='position:absolute;text-align:left;background-color:white;width:100%;'>\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 "<tr><td colspan='5' style='font-size:1em;'>\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 "</td></tr>\n";
###end Edit Parts

View file

@ -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<<EOF
@ -115,49 +119,36 @@ print<<EOF
EOF
;
}
#print $q->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"},"<br /><br />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</br>";
my $co2diff = $pri->co2calc($cttpos->{$id});
my $sprit_price = $pri->sprit2calc($cttpos->{$id});
$co2saving .= "$co2diff kg CO&sup2;<br />";
$co2saving .= "$sprit_price EUR<br />";
$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 "<td class='element' style='$txtstyle $set_style;background-color: #ededed;$occupied_style;'\n>";
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),"<br />\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</br>";
my $co2diff = $pri->co2calc($cttpos->{$id});
my $sprit_price = $pri->sprit2calc($cttpos->{$id});
$co2saving .= "$co2diff kg CO&sup2;<br />";
$co2saving .= "$sprit_price EUR<br />";
$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 "<br />\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 "</td>\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("&nbsp;");
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;

View file

@ -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;

View file

@ -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 &frac12; 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 "<td class='tdtxt' style='$occupied_style'>\n";
if($ctpos->{$id}->{txt01}){
$ctpos->{$id}->{$key} =~ s/\<br \/\>/; &nbsp; /g;
print "$ctpos->{$id}->{$key}<br />\n";
if($cttpos->{$id}->{txt01}){
$cttpos->{$id}->{$key} =~ s/\<br \/\>/; &nbsp; /g;
print "$cttpos->{$id}->{$key}<br />\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("&rarr; $ctpos->{$id}->{start_time}<br />&larr; $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("&rarr; $cttpos->{$id}->{start_time}<br />&larr; $cttpos->{$id}->{end_time}");
}
print "</td>\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 "<td class='tdtxt' style='$occupied_style'>\n";
print $q->span("Station<br />&rarr; $ctpos->{$id}->{txt12}$ctpos->{$id}->{int06}<br />&larr; $ctpos->{$id}->{txt13}$ctpos->{$id}->{int04}");
print $q->span("Station<br />&rarr; $cttpos->{$id}->{txt12}$cttpos->{$id}->{int06}<br />&larr; $cttpos->{$id}->{txt13}$cttpos->{$id}->{int04}");
print "</td>\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<br />$ctpos->{$id}->{$key}");
if($cttpos->{$id}->{int09}){#if Tarifnr then bike
print $q->td({-class=>'tdint', -style=>"$occupied_style"},"Rad<br />$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</br>";
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&sup2;<br />";
$co2saving .= "$sprit_price EUR<br />";
$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,",");