From 7f4becd901885581aa425f8f56a4fdfa94045513 Mon Sep 17 00:00:00 2001 From: ragu Date: Mon, 31 Oct 2022 08:11:53 +0100 Subject: [PATCH] operator accounting disagio --- copri4/main/css/local_style20220928.css | 4 +- copri4/main/src/Mod/APIfunc.pm | 52 +- copri4/main/src/Mod/APIjsonclient.pm | 7 +- copri4/main/src/Mod/APIjsonserver.pm | 12 +- copri4/main/src/Mod/Buttons.pm | 1 + copri4/main/src/Mod/DBtank.pm | 6 +- copri4/main/src/Mod/GBFSout.pm | 9 +- copri4/main/src/Mod/Indexsharee.pm | 2 + copri4/main/src/Mod/Payment.pm | 1 - copri4/main/src/Mod/Prelib.pm | 82 ++- copri4/main/src/Mod/Prelogic.pm | 9 +- copri4/main/src/Mod/Pricing.pm | 38 +- copri4/main/src/Mod/Printpreview.pm | 633 +++++++++++++----- copri4/main/src/Tpl/Address3.pm | 109 +-- copri4/main/src/Tpl/BaseEdit.pm | 4 +- copri4/main/src/Tpl/Calorin.pm | 2 - copri4/main/src/Tpl/Liste3.pm | 15 +- copri4/main/src/Tpl/TransInvoices.pm | 236 ++++--- copri4/main/src/Tpl/TransPositionen.pm | 164 ++--- copri4/main/src/scripts/Ilockit_cloud.pl | 4 +- .../main/src/scripts/Ilockit_trackingcloud.pl | 4 +- copri4/shareeapp-operator/src/Tpl/FormEdit.pm | 4 +- 22 files changed, 920 insertions(+), 478 deletions(-) diff --git a/copri4/main/css/local_style20220928.css b/copri4/main/css/local_style20220928.css index 4fedb16..8db59ff 100755 --- a/copri4/main/css/local_style20220928.css +++ b/copri4/main/css/local_style20220928.css @@ -584,7 +584,7 @@ select,input { z-index:10; top:0%; left:0%; - padding:4px 10px; + padding:5px 10px; } @@ -706,7 +706,7 @@ div#Content4cal { border: 0px solid gray; margin: 0; padding: 40px 5px 5px 0px; - min-width: 1200px; + min-width: 1400px; min-height: 500px; } diff --git a/copri4/main/src/Mod/APIfunc.pm b/copri4/main/src/Mod/APIfunc.pm index c4703fd..5d5c210 100755 --- a/copri4/main/src/Mod/APIfunc.pm +++ b/copri4/main/src/Mod/APIfunc.pm @@ -1469,9 +1469,9 @@ sub booking_update(){ if($booking->{int26}){ $co2saving = "Einsparung: "; my $co2diff = $pri->co2calc($booking); - my $sprit_price = $pri->sprit2calc($booking); + #my $sprit_price = $pri->sprit2calc($booking); $co2saving .= "$co2diff kg CO2, "; - $co2saving .= "$sprit_price EUR " if($sprit_price !~ /-/); + #$co2saving .= "$sprit_price EUR " if($sprit_price !~ /-/); $booking->{int26} =~ s/\./,/; $co2saving .= "bei einer Strecke von $booking->{int26} KM"; $booking_values->{co2saving} = $co2saving; @@ -1724,9 +1724,9 @@ sub rental_to_feedback{ if($ctpos->{int26}){ my $co2saving = "Einsparung: "; my $co2diff = $pri->co2calc($ctpos); - my $sprit_price = $pri->sprit2calc($ctpos); + #my $sprit_price = $pri->sprit2calc($ctpos); $co2saving .= "$co2diff kg CO2, "; - $co2saving .= "$sprit_price EUR " if($sprit_price !~ /-/); + #$co2saving .= "$sprit_price EUR " if($sprit_price !~ /-/); $ctpos->{int26} =~ s/\./,/; $co2saving .= "bei einer Strecke von $ctpos->{int26} KM"; $show_dialog->{co2saving} = $co2saving; @@ -1797,8 +1797,8 @@ sub rentals(){ $return->{$id}->{K_u} = "$K_val" if($K_key eq "K_u"); } } + $bw->log("user_bikes_occupied rentals bike $return->{$id}->{bike} | station $return->{$id}->{station} | state $return->{$id}->{state}, auth:$auth->{c_id}",$return->{$id}->{c_id},""); } - return $return; }#end rentals @@ -2631,7 +2631,7 @@ sub auth_verify(){ my $auth_primary = { c_id => 0 }; my $auth_operator = { c_id => 0 }; $auth_operator = $dbt->fetch_record($dbh,$authref); - $bw->log("auth_verified on operator $varenv{dbname} anchor 1",$auth_operator->{c_id},""); + #$bw->log("auth_verified on operator $varenv{dbname} anchor 1",$auth_operator->{c_id},""); #just part of operator-routing (sharee account management) if($varenv{dbname} ne "sharee_primary"){ @@ -2640,7 +2640,7 @@ sub auth_verify(){ $auth_primary = $dbt->fetch_record($dbh_primary,$authref); if($auth_primary->{c_id} && $auth_primary->{c_id} > 0){ - $bw->log("auth_verified on primary anchor 2 by dbname $varenv{dbname}",$auth_primary->{c_id},""); + #$bw->log("auth_verified on primary anchor 2 by dbname $varenv{dbname}",$auth_primary->{c_id},""); print FILE "auth_verified on primary anchor 2 by dbname $varenv{dbname} | pri $auth_primary->{c_id}\n" if($debug); #On booking_request, user must be authenticated and addr must exist @@ -2649,7 +2649,7 @@ sub auth_verify(){ #first, save operator array which are used my %operator_hash = ();#local DB - $bw->log("booking_request auth_verified by dbname $varenv{dbname}",$auth_primary->{c_id},""); + #$bw->log("booking_request auth_verified by dbname $varenv{dbname}",$auth_primary->{c_id},""); print FILE "booking_request auth_verified by dbname $varenv{dbname} | pri $auth_primary->{c_id}\n if($debug)"; if($auth_primary->{txt17} && $auth_primary->{txt17} =~ /\w\s\w/){#append DB's @@ -2660,7 +2660,7 @@ sub auth_verify(){ $operator_hash{$varenv{dbname}} = 1 if($varenv{dbname} ne "sharee_lv");#LastenVelo dbname will be only set by xml my @operator_array = keys %operator_hash; - $bw->log("auth_verified update operator keys by array: @operator_array",\%operator_hash,""); + #$bw->log("auth_verified update operator keys by array: @operator_array",\%operator_hash,""); print FILE "auth_verified update operator keys by array: @operator_array | pri $auth_primary->{c_id}\n" if($debug); my $update_primary = { table => "contentadr", @@ -2696,13 +2696,13 @@ sub auth_verify(){ }; my $auth_operator3 = { c_id => 0 }; $auth_operator3 = $dbt->fetch_record($dbh,$authref);# if($uid); - $bw->log("auth_verified on operator anchor 3 by dbname $varenv{dbname}",$auth_operator3->{c_id},""); + #$bw->log("auth_verified on operator anchor 3 by dbname $varenv{dbname}",$auth_operator3->{c_id},""); print FILE "auth_verified on operator anchor 3 by dbname $varenv{dbname} | op3 $auth_operator3->{c_id}\n" if($debug); #if user on operator available by userid c_id, then update authcookie if($auth_operator3->{c_id} && $auth_operator3->{c_id} > 0){ my $authcookies = $auth_operator3->{txt05} . "|" . $cgi_authcookie; - $bw->log("UPDATE adr on operator by dbname $varenv{dbname}",$auth_operator3->{c_id},""); + #$bw->log("UPDATE adr on operator by dbname $varenv{dbname}",$auth_operator3->{c_id},""); print FILE "UPDATE adr on operator by dbname $varenv{dbname} | op3 $auth_operator3->{c_id}\n" if($debug); my $update = { table => "contentadr", @@ -2730,31 +2730,27 @@ sub auth_verify(){ $c_id = $dbt->insert_contentoid($dbh,$insert,"reset_adropkeys"); } }else{ - $bw->log("auth_verified on operator anchor 3 FAILS by dbname $varenv{dbname}. user seem not be activated",$auth_operator->{c_id},""); + #$bw->log("auth_verified on operator anchor 3 FAILS by dbname $varenv{dbname}. user seem not be activated",$auth_operator->{c_id},""); print FILE "auth_verified on operator anchor 3 FAILS by dbname $varenv{dbname}. user seem not be activated | op $auth_operator->{c_id}\n" if($debug); } } $auth_operator = $dbt->fetch_record($dbh,$authref); if($auth_operator->{c_id} && $auth_operator->{c_id} > 0){ $record = $auth_operator;#At first try using operator to get Tarif - $bw->log("auth_verified on operator anchor 2.2 by dbname $varenv{dbname}",$auth_operator->{c_id},""); + #$bw->log("auth_verified on operator anchor 2.2 by dbname $varenv{dbname}",$auth_operator->{c_id},""); print FILE "auth_verified on operator anchor 2.2 by dbname $varenv{dbname} | op $auth_operator->{c_id}\n" if($debug); }else{ $record = $auth_primary; - $bw->log("auth_verified on primary anchor 2.3 by dbname $varenv{dbname}",$auth_primary->{c_id},""); + #$bw->log("auth_verified on primary anchor 2.3 by dbname $varenv{dbname}",$auth_primary->{c_id},""); print FILE "auth_verified on primary anchor 2.3 by dbname $varenv{dbname} | pri $auth_primary->{c_id}\n" if($debug); } }else{# if($auth_primary->{c_id}) fails - $bw->log("auth_verified on primary anchor 4 FAILS by dbname $varenv{dbname}.",$auth_primary->{c_id},""); + #$bw->log("auth_verified on primary anchor 4 FAILS by dbname $varenv{dbname}.",$auth_primary->{c_id},""); print FILE "auth_verified on primary anchor 4 FAILS by dbname $varenv{dbname} | pri $auth_primary->{c_id}\n" if($debug); - #$auth_operator = $dbt->fetch_record($dbh,$authref); - #$record = $auth_operator; - #$bw->log("auth_verified on operator anchor 9 by dbname $varenv{dbname}.",$auth_operator->{c_id},""); - #print FILE "auth_verified on operator anchor 9 by dbname $varenv{dbname} | op $auth_operator->{c_id}\n" if($debug); } }else{# if($varenv{dbname} eq "sharee_primary") $auth_primary = $dbt->fetch_record($dbh,$authref); - $bw->log("auth_verified on operator anchor 4 by dbname $varenv{dbname}",$auth_primary->{c_id},""); + #$bw->log("auth_verified on operator anchor 4 by dbname $varenv{dbname}",$auth_primary->{c_id},""); print FILE "auth_verified on operator anchor 4 by dbname $varenv{dbname} | pri $auth_primary->{c_id}\n" if($debug); $record = $auth_primary; }#end if($varenv{dbname} ne "sharee_primary") @@ -2797,14 +2793,14 @@ sub auth_verify(){ $return->{response_text} = "Danke, die Anmeldebestätigung war erfolgreich."; } }else{ - $bw->log("auth_verified on operator anchor FAILS by dbname $varenv{dbname}, no authcookie, dump \$q",$q,""); + #$bw->log("auth_verified on operator anchor FAILS by dbname $varenv{dbname}, no authcookie, dump \$q",$q,""); print FILE "auth_verified on operator anchor FAILS by dbname $varenv{dbname}, no authcookie\n" if($debug); } $return->{agb_checked} = "0"; $return->{agb_checked} = "1" if($record->{int14});#sharee AGB global my $last_used_operator = $record->{txt19};#check if this is primary and/or useable - $bw->log("last_used_operator selected by txt19:",$last_used_operator,""); + #$bw->log("last_used_operator selected by txt19:",$last_used_operator,""); if($last_used_operator){ my $dbh_operator = $dbt->dbconnect_extern("$last_used_operator"); my $hotline_hash = { @@ -2831,19 +2827,19 @@ sub auth_verify(){ $return->{last_used_operator}->{operator_email} = $hotline_data->{txt08} if($hotline_data->{txt08}); } - $bw->log("auth_verify done on txt05 authcookies by dbname $varenv{dbname}:",$record->{txt05},""); + #$bw->log("auth_verify done on txt05 authcookies by dbname $varenv{dbname}:",$record->{txt05},""); #Servicetool only users with users.int09=1 #shareetool if($varenv{dbname} ne "sharee_primary" && $return->{merchant_id} && $dbt->{merchant_ids}->{$return->{merchant_id}}->{id} && $dbt->{merchant_ids}->{$return->{merchant_id}}->{id} == 187){ my $users_serviceapp = { u_id => 0 }; $users_serviceapp = $dbt->select_users($dbh,$record->{c_id},"and int09=1"); - $bw->log("users_serviceapp: $users_serviceapp->{u_id} && $varenv{dbname} && $return->{merchant_id} && $dbt->{merchant_ids}->{$return->{merchant_id}}->{id}","",""); + #$bw->log("users_serviceapp: $users_serviceapp->{u_id} && $varenv{dbname} && $return->{merchant_id} && $dbt->{merchant_ids}->{$return->{merchant_id}}->{id}","",""); if(!$users_serviceapp->{u_id} || $users_serviceapp->{u_id} == 0){ $record = { c_id => 0 }; $return = { c_id => 0 }; - $bw->log("reset auth_verify because of only Servicetool users access:",$record,""); + #$bw->log("reset auth_verify because of only Servicetool users access:",$record,""); } print FILE "users_serviceapp: $users_serviceapp->{u_id} | $return->{authcookie}\n" if($debug); } @@ -2945,14 +2941,14 @@ sub authcookie_manager { my @registered_cookies; my $registered_cookies; my @check_cookies = split(/\|/,$record->{txt05}); - $bw->log("check_cookies","@check_cookies",""); + #$bw->log("check_cookies","@check_cookies",""); @check_cookies = reverse(@check_cookies); my $i=0; foreach(@check_cookies){ $i++; #secure shortage cookies if(length($_) > 20 && $i < 8){#max 8 clients - $bw->log("$i < 8 cookies",$_,""); + #$bw->log("$i < 8 cookies",$_,""); push @registered_cookies,$_; } } @@ -2963,7 +2959,7 @@ sub authcookie_manager { } $registered_cookies =~ s/\|$//; - $bw->log("generated authcookie",$authcookie,""); + #$bw->log("generated authcookie",$authcookie,""); #return still existing authcookie if($registered_cookies && $registered_cookies =~ /$authcookie/){ diff --git a/copri4/main/src/Mod/APIjsonclient.pm b/copri4/main/src/Mod/APIjsonclient.pm index aaabfcc..7d3e841 100755 --- a/copri4/main/src/Mod/APIjsonclient.pm +++ b/copri4/main/src/Mod/APIjsonclient.pm @@ -78,10 +78,9 @@ sub loop_sharees { $bw->log("shareetool select_users $return_merchant->{aowner} on $value->{database}->{dbname} $authraw->{c_id} $authraw->{txt17}",$users_serviceapp->{u_id},""); } #every sharee client must have a merchant_id which associate a project - #if($value->{operatorApp} && ($users_serviceapp->{u_id} || ($return_merchant->{project_id} eq $value->{project} || $return_merchant->{project_id} eq "all"))) if($value->{operatorApp} && ($users_serviceapp->{u_id} || ($return_merchant->{project_id} eq $value->{project}))){ - $bw->log("--> LOOP-start ($return_merchant->{merchant_id}) jsonclient loop_sharees $key by operatorApp: $value->{operatorApp}, netloc: $netloc if($return_merchant->{project_id} eq $value->{project} || $users_serviceapp->{u_id} > 0)\n","",""); + #$bw->log("--> LOOP-start ($return_merchant->{merchant_id}) jsonclient loop_sharees $key by operatorApp: $value->{operatorApp}, netloc: $netloc if($return_merchant->{project_id} eq $value->{project} || $users_serviceapp->{u_id} > 0)\n","",""); $ret_json = $self->fetch_operator_json("$value->{operatorApp}/APIjsonserver",$rest); #print Dumper($ret_json); @@ -124,7 +123,7 @@ sub loop_sharees { }else{ $bw->log("NO json from Operator:",$value->{operatorApp},""); } - $bw->log("--> LOOP-end jsonclient loop_sharees user_group:\n",\@user_group,""); + #$bw->log("--> LOOP-end jsonclient loop_sharees user_group:\n",\@user_group,""); } } @@ -139,7 +138,7 @@ sub fetch_operator_json { my $rest = shift || ""; my $operator_request = "$operator_server?$rest"; - $bw->log("fetch_operator_json >> ","$operator_request",""); + #$bw->log("fetch_operator_json >> ","$operator_request",""); my $req = HTTP::Request->new(GET => "$operator_request"); $req->content_type('application/x-www-form-urlencoded'); diff --git a/copri4/main/src/Mod/APIjsonserver.pm b/copri4/main/src/Mod/APIjsonserver.pm index 3db9819..a2c8a40 100755 --- a/copri4/main/src/Mod/APIjsonserver.pm +++ b/copri4/main/src/Mod/APIjsonserver.pm @@ -466,7 +466,7 @@ elsif($q->param('request') eq "bikes_available"){ #on operator loop select, operator adr must be select to get user_group my ($auth,$authraw) = $apif->auth_verify($q); $response = { %$response, %$auth }; - $bw->log("Y bikes_available by c_id $authraw->{c_id}, Tarif:",$authraw->{txt30},""); + #$bw->log("Y bikes_available by c_id $authraw->{c_id}, Tarif:",$authraw->{txt30},""); #sig first save #if($varenv{syshost} eq "shareeapp-sx"){ @@ -700,7 +700,7 @@ elsif($q->param('request') eq "user_feedback" || $q->param('request') eq "user_m my $customer = $auth->{c_id}; #print Dumper($auth); (my $xresponse->{$customer}, my $responseraw, my $node_template, my $crecord) = $apif->service_select($q,$authraw,"","1"); - $bw->log("c_id: $crecord->{c_id} |user_feedback OR user_minianswer node_template",$node_template,""); + #$bw->log("c_id: $crecord->{c_id} |user_feedback OR user_minianswer node_template",$node_template,""); my $back_id = ""; my $rows=0; @@ -749,10 +749,10 @@ elsif($q->param('request') eq "service_done"){ #select services with max work_duration of 1 day and service_worker alias contentadr.c_id = contenttranspo.owner match (my $xresponse->{$article}, my $responseraw, my $node_template, my $crecord) = $apif->service_select($q,$authraw,"","1"); - $bw->log("service_done OOO: node",$node_template,""); + #$bw->log("service_done OOO: node",$node_template,""); if(ref($xresponse->{$article}) eq "HASH"){ - $bw->log("service_done xresponse",$xresponse->{$article},""); + #$bw->log("service_done xresponse",$xresponse->{$article},""); my $service_id = ""; #select last service_id with work_duration < 1 day @@ -896,7 +896,7 @@ elsif($q->param('request') eq "service_work"){ #$bw->log("service_work bike_id $bike_id pos_record",$pos_record,""); ($response_work, $node) = $apif->service_work($pos_record,$bikes_allraw,$history,$node_template); - $bw->log("service_work bike_id $bike_id response_work",$response_work,""); + #$bw->log("service_work bike_id $bike_id response_work",$response_work,""); if(ref($response_work) ne "HASH"){#if fails $response->{response_state} = "Failure 4010: no service found"; } @@ -970,7 +970,7 @@ else{ my $jrout = $json->pretty->encode({shareejson => $response}); print $jrout; -$bw->log("APIjsonserver response by $user_agent mapped aowner:$aowner",$jrout,""); +$bw->log("APIjsonserver response by $user_agent mapped aowner:$aowner",$jrout,"") if($user_agent !~ /APIclient/); #end JSON ---------------------------------------------------------------------------- return Apache2::Const::OK; diff --git a/copri4/main/src/Mod/Buttons.pm b/copri4/main/src/Mod/Buttons.pm index c12ef59..26142d0 100755 --- a/copri4/main/src/Mod/Buttons.pm +++ b/copri4/main/src/Mod/Buttons.pm @@ -75,6 +75,7 @@ sub ibuttons(){ 'set_workflow' => 'Workflow', 'set_workflow2invoice' => 'Rechnung generieren', 'set_workflow2storno' => 'Storno generieren', + 'set_accounting2invoice' => 'Rechnung generieren', 'relate_content' => 'Content-Menu Relation', 'relate_dialog' => 'Relation herstellen', 'relate_dialog4menu' => 'Relation herstellen', diff --git a/copri4/main/src/Mod/DBtank.pm b/copri4/main/src/Mod/DBtank.pm index dd60375..d07c276 100755 --- a/copri4/main/src/Mod/DBtank.pm +++ b/copri4/main/src/Mod/DBtank.pm @@ -62,7 +62,7 @@ sub dbconnect_extern { my $conf = Config::General->new($globalconf_file); my %globalconf = $conf->getall; - $bw->log("dbconnect_extern call with instance_type:$instance_type and copri_instance:",$dbname,""); + #$bw->log("dbconnect_extern call with instance_type:$instance_type and copri_instance:",$dbname,""); #keep in mind, only one DB can be returned by this way #while (my ($key, $value) = each %{ $self->{$instance_type} }) { @@ -91,7 +91,7 @@ sub get_operator_conf { while (my ($key, $operator) = each %{ $globalconf{operator} }) { if($oprefix && $oprefix eq $operator->{oprefix}){ - $bw->log("get operator conf by oprefix: $oprefix",$operator->{oprefix},""); + #$bw->log("get operator conf by oprefix: $oprefix",$operator->{oprefix},""); return $operator; } } @@ -1437,7 +1437,7 @@ sub insert_contenttrans(){ my $owner = shift || 0; $owner="199" if(!$owner); - my $sth = $dbh->prepare("INSERT INTO contenttrans (ct_name,txt00,int10,int03,txt02,txt01,txt03,txt06,txt07,txt08,txt09,txt15,txt17,txt18,txt19,owner,itime) VALUES('$invoice_nr','Rechnung','$ctadr->{c_id}','$ctadr->{int03}','$ctadr->{txt02}','$ctadr->{txt01}','$ctadr->{txt03}','$ctadr->{txt06}','$ctadr->{txt07}','$ctadr->{txt08}','$ctadr->{txt09}','$ctadr->{txt15}','$ctadr->{txt17}','$ctadr->{txt18}','$ctadr->{txt19}','$owner','now()') RETURNING c_id"); + my $sth = $dbh->prepare("INSERT INTO contenttrans (ct_name,txt00,int10,txt02,txt01,txt03,txt06,txt07,txt08,txt09,txt15,txt17,txt18,txt19,owner,itime) VALUES('$invoice_nr','Rechnung','$ctadr->{c_id}','$ctadr->{txt02}','$ctadr->{txt01}','$ctadr->{txt03}','$ctadr->{txt06}','$ctadr->{txt07}','$ctadr->{txt08}','$ctadr->{txt09}','$ctadr->{txt15}','$ctadr->{txt17}','$ctadr->{txt18}','$ctadr->{txt19}','$owner','now()') RETURNING c_id"); my $rows = $sth->execute(); my $last_id; diff --git a/copri4/main/src/Mod/GBFSout.pm b/copri4/main/src/Mod/GBFSout.pm index 7c5a624..08a23a9 100755 --- a/copri4/main/src/Mod/GBFSout.pm +++ b/copri4/main/src/Mod/GBFSout.pm @@ -21,7 +21,7 @@ use Apache2::Const -compile => qw(OK ); use Scalar::Util qw(looks_like_number); use JSON; use LWP::UserAgent; - +use Time::Piece; use Lib::Config; use Mod::DBtank; use Mod::APIfunc; @@ -103,9 +103,9 @@ sub station_information { #$gbfs_station{$station}{is_charging_station} = 1 if(grep(/300102/, @{$response_stations->{shareejson}->{stations}->{$station}->{station_group}}));#E-L push (@gbfs_stations, $gbfs_station{$station}); } - + my $last_updated = time(); $gbfs_resp = { - "last_updated" => 1653031183, + "last_updated" => $last_updated, "ttl" => 10, "version" => "2.2", "data" => { @@ -160,8 +160,9 @@ sub vehicle_status { #"pricing_plan_id":"plan3" #} + my $last_updated = time(); $gbfs_resp = { - "last_updated" => 1653031183, + "last_updated" => $last_updated, "ttl" => 0, "version" => "3.0", "data" => { diff --git a/copri4/main/src/Mod/Indexsharee.pm b/copri4/main/src/Mod/Indexsharee.pm index 3ff6410..3641cc5 100755 --- a/copri4/main/src/Mod/Indexsharee.pm +++ b/copri4/main/src/Mod/Indexsharee.pm @@ -375,6 +375,8 @@ sub handler { $db->update_users4trans($R::c_id4trans,$R::tpl_id4trans,"",$users_dms->{u_id}) if(looks_like_number($R::c_id4trans) && looks_like_number($R::tpl_id4trans)); if($R::ct_trans =~ /set_workflow2invoice|set_workflow2storno/){ $return = $pl->set_workflow($users_dms,$R::c_id4trans,$R::set_main_id4workflow) if(looks_like_number($R::c_id4trans) && looks_like_number($R::tpl_id4trans) && looks_like_number($R::set_main_id4workflow)); + }elsif($R::ct_trans =~ /set_accounting2invoice/){ + $return = $pl->set_accounting2invoice($users_dms,$R::c_id4trans,$R::set_main_id4workflow) if(looks_like_number($R::c_id4trans) && looks_like_number($R::tpl_id4trans) && looks_like_number($R::set_main_id4workflow)); }elsif($R::detail_search && $R::detail_search eq "operator_accounting"){ my $ck4ex = "@R::ck4ex" || ""; $return = $pl->operator_accounting($users_dms,$users_sharee,$R::accounting_type,$ck4ex); diff --git a/copri4/main/src/Mod/Payment.pm b/copri4/main/src/Mod/Payment.pm index a1836bd..400f400 100755 --- a/copri4/main/src/Mod/Payment.pm +++ b/copri4/main/src/Mod/Payment.pm @@ -509,7 +509,6 @@ sub rpc { $update_ctt->{ct_name} = $ctt->{ct_name} if($ctt->{ct_name}); if($txidval && $ctt->{c_id} && $ctadr->{c_id}){ - $update_ctt->{int03} = $ctadr->{int03}; $update_ctt->{int17} = $useridval if($useridval); $update_ctt->{txt16} = $txidval; $update_ctt->{txt22} = $ctt->{payone_reset} if($ctt->{payone_reset}); diff --git a/copri4/main/src/Mod/Prelib.pm b/copri4/main/src/Mod/Prelib.pm index 1b475e4..2179b60 100755 --- a/copri4/main/src/Mod/Prelib.pm +++ b/copri4/main/src/Mod/Prelib.pm @@ -406,7 +406,7 @@ sub set_workflow { #position copy if($c_idnew > 0){ my ($cttpos,$rows) = $db->collect_contentpos("contenttrans",$c_id); - foreach my $id (sort { lc($cttpos->{$a}->{sort}) cmp lc($cttpos->{$b}->{sort}) } keys(%$cttpos)){ + foreach my $id (sort { $cttpos->{$a}->{c_id} <=> $cttpos->{$b}->{c_id} } keys(%$cttpos)){ #reverse pos sum for example by Storno $cttpos->{$id}->{int01} = $cttpos->{$id}->{int01} * -1 if($cttpos->{$id}->{int01} != 0); $cttpos->{$id}->{int05} = $cttpos->{$id}->{c_id};# set source pos id if sub doc @@ -436,6 +436,69 @@ sub set_workflow { exit 0; }#end set_workflow + +#generate invoice from operator accounting +sub set_accounting2invoice { + my $self = shift; + my $users_dms = shift; + my $c_id = shift; + my $set_main_id = shift || ""; + my %varenv = $cf->envonline(); + my $dbh = ""; + my $node = $dbt->get_node($dbh,$set_main_id); + + my $pref = { + table => "contenttrans", + fetch => "one", + c_id => $c_id, + }; + + my $ctt = { c_id => 0 }; + $ctt = $dbt->fetch_tablerecord($dbh,$pref); + + #barcode setting logic reset. keep barcode from orignal for backlinking + #counter invoice subnr + if($ctt->{ct_name} =~ /\d+-\d+/){ + my ($ct_name,$subname) = split(/-/,$ctt->{ct_name}); + $subname++; + $ctt->{ct_name} = "$ct_name-$subname"; + }else{ + $ctt->{ct_name} = "$ctt->{ct_name}-1"; + } + delete $ctt->{c_id}; + delete $ctt->{txt00}; + delete $ctt->{state}; + delete $ctt->{itime}; + delete $ctt->{mtime}; + delete $ctt->{close_time}; + delete $ctt->{invoice_time}; + delete $ctt->{pay_time}; + + my $insert_ctt = { + %$ctt, + table => "contenttrans", + itime => 'now()', + mtime => 'now()', + owner => "$users_dms->{u_id}", + ct_name => "$ctt->{ct_name}", + txt00 => "$node->{node_name}", + template_id => "218", + main_id => "$node->{main_id}", + }; + my $c_idnew = 0; + $c_idnew = $dbt->insert_contentoid($dbh,$insert_ctt,""); + $i_rows = 1 if($c_idnew); + #taking just same (operator_accounting) invoices detected by int10=2 + + $db->update_users4trans($c_idnew,"218","",$users_dms->{u_id}); + + my $uri_path = $dbt->recurse_node($dbh,$node->{main_id}); + print "$varenv{wwwhost}/$uri_path?return=$i_rows-$u_rows-$d_rows\n"; + print redirect("$varenv{wwwhost}/$uri_path?return=$i_rows-$u_rows-$d_rows"); + exit 0; + +}#end set_accounting2invoice + #new node relation with option to create subnode for Servicelog sub new_relation { my $self = shift; @@ -857,11 +920,18 @@ sub operator_accounting { mtime => "now()", owner => $users_dms->{u_id}, }; - $update_ctt->{int21} = $ctuser->{int01} if($ctuser->{int01}); - $update_ctt->{int22} = $ctuser->{int02} if($ctuser->{int02}); - $update_ctt->{int23} = $ctuser->{int03} if($ctuser->{int03}); - $update_ctt->{int24} = $ctuser->{int04} if($ctuser->{int04}); - $update_ctt->{int25} = $ctuser->{int05} if($ctuser->{int05}); + + my $tplop = $dbt->get_tpl($dbh,"196");#Operator-Faktura + my @tplop_order = split /,/,$tplop->{tpl_order}; + foreach(@tplop_order){ + my ($key,$val,$size,$unit) = split /=/,$_; + if($key =~ /int(\d+)/){ + #take fee values used by creating operator accounting invoice + my $count_key = $1 + 20;#cu.int to ctt.int + my $ctt_key = "int" . $count_key; + $update_ctt->{$ctt_key} = $ctuser->{$key} if($ctuser->{$key}); + } + } $dbt->update_record($dbh,$update_ctt,$ctt); my $pref = { diff --git a/copri4/main/src/Mod/Prelogic.pm b/copri4/main/src/Mod/Prelogic.pm index 686fa59..84713cb 100755 --- a/copri4/main/src/Mod/Prelogic.pm +++ b/copri4/main/src/Mod/Prelogic.pm @@ -598,9 +598,16 @@ sub preinit(){ if($R::set_state eq "buchen" && $R::sum_paid){ $sum_paid = $R::sum_paid; $sum_paid =~ s/,/\./; + $update_ctt->{int01} = $sum_paid; + } + + my $sum_operatorcredit = "null"; + if($R::set_state eq "buchen" && $R::sum_operatorcredit){ + $sum_operatorcredit = $R::sum_operatorcredit; + $sum_operatorcredit =~ s/,/\./; + $update_ctt->{int02} = $sum_operatorcredit; } - $update_ctt->{int01} = "$sum_paid"; $update_ctt->{state} = "$state"; $update_ctt->{int14} = 2 if($state =~ /payone/);#set OPOS $u_rows += $dbt->update_record($dbh,$update_ctt,$ctt); diff --git a/copri4/main/src/Mod/Pricing.pm b/copri4/main/src/Mod/Pricing.pm index 0013310..dc68bf1 100755 --- a/copri4/main/src/Mod/Pricing.pm +++ b/copri4/main/src/Mod/Pricing.pm @@ -411,6 +411,7 @@ sub co2calc { } #calculates sprit saving +#disabled sub sprit2calc { my $self = shift; my $ctpos = shift; @@ -434,6 +435,7 @@ sub sprit2calc { $sprit_price = sprintf('%.2f',$sprit_price); $sprit_price =~ s/\./,/; + $sprit_price = ""; return $sprit_price; } @@ -478,16 +480,22 @@ sub operator_accounting2calc { my $varenv = shift; my $ctpos = shift;#client invoices my $ctf = shift;#Operator-Faktura config - my $tplf = shift;#Operator-Faktura template + + my $tplf = $dbt->get_tpl($dbh,"196");#Operator-Faktura my @tplf_order = split /,/,$tplf->{tpl_order}; #returned values my $oac = { int01 => 0, int02 => 0, - int91 => 0, - int92 => 0, int93 => 0, + int94 => 0, + int95 => 0, + int96 => 0, + int97 => 0, + int98 => 0, + int99 => 0, + int100 => 0, }; @@ -496,16 +504,26 @@ sub operator_accounting2calc { if($key =~ /int/){ $oac->{int01} = $oac->{int01} + $ctpos->{int01} if($key eq "int01" && $ctpos->{int01});#invoice capture if($ctpos->{state} =~ /Lastschrift/){ - $oac->{int91} = $oac->{int01} / 100 * $ctf->{$key} * -1 if($key eq "int01");#7,5% - $oac->{int92} = $ctf->{$key} * -1 if($key eq "int04");#Trans - $oac->{int93} = $oac->{int01} / 100 * $ctf->{$key} * -1 if($key eq "int02");#Disagio + $oac->{int93} = $oac->{int01} / 100 * $ctf->{$key} * -1 if($key eq "int01");#7,5% + $oac->{int98} = $oac->{int93} * 0.19 if($oac->{int93});#UmSt auf 7,5% + $oac->{int94} = $oac->{int01} / 100 * $ctf->{$key} * -1 if($key eq "int02");#Disagio % + $oac->{int99} = $oac->{int94} * 0.19 if($varenv->{dbname} eq "sharee_sx" && $oac->{int94});#UmSt TeilRad Disagio + $oac->{int95} = $ctf->{$key} * -1 if($key eq "int04");#Trans + $oac->{int96} = $ctf->{$key} * -1 if($key eq "int06");#Zahlungsmeldung + $oac->{int97} = 0; } if($ctpos->{state} =~ /Kreditkarte/){ - $oac->{int91} = $oac->{int01} / 100 * $ctf->{$key} * -1 if($key eq "int01");#7,5% - $oac->{int92} = $ctf->{$key} * -1 if($key eq "int05");#Trans - $oac->{int93} = $oac->{int01} / 100 * $ctf->{$key} * -1 if($key eq "int03");#Disagio + $oac->{int93} = $oac->{int01} / 100 * $ctf->{$key} * -1 if($key eq "int01");#7,5% + $oac->{int98} = $oac->{int93} * 0.19 if($oac->{int93});#UmSt auf 7,5% + $oac->{int94} = $oac->{int01} / 100 * $ctf->{$key} * -1 if($key eq "int03");#Disagio % + $oac->{int99} = $oac->{int94} * 0.19 if($varenv->{dbname} eq "sharee_sx" && $oac->{int94});#UmSt TeilRad Disagio + $oac->{int95} = $ctf->{$key} * -1 if($key eq "int05");#Trans + $oac->{int96} = $ctf->{$key} * -1 if($key eq "int06");#Zahlungsmeldung + $oac->{int97} = $ctf->{$key} * -1 if($key eq "int07");#CC Zuordnung } - $oac->{int02} = $oac->{int01} + $oac->{int91} + $oac->{int92} + $oac->{int93};#operator accounting + #operator accounting + $oac->{int02} = $oac->{int01} + $oac->{int93} + $oac->{int98} + $oac->{int94} + $oac->{int99} + $oac->{int95} + $oac->{int96} + $oac->{int97}; + $oac->{int100} = ($oac->{int93} + $oac->{int98} + $oac->{int94} + $oac->{int99}) * -1; } } diff --git a/copri4/main/src/Mod/Printpreview.pm b/copri4/main/src/Mod/Printpreview.pm index 501bc48..c64fd30 100755 --- a/copri4/main/src/Mod/Printpreview.pm +++ b/copri4/main/src/Mod/Printpreview.pm @@ -17,9 +17,9 @@ use DateTime::Format::Pg; use Scalar::Util qw(looks_like_number); use Lib::Config; use Mod::Libenz; -use Mod::Libenzdb; use Mod::DBtank; use Mod::Pricing; +use Data::Dumper; sub new { my $class = shift; @@ -32,7 +32,6 @@ sub printpre(){ my $q = new CGI; my $cf = new Config; my $lb = new Libenz; - my $db = new Libenzdb; my $dbt = new DBtank; my $pri = new Pricing; @@ -42,6 +41,7 @@ sub printpre(){ my $user_agent = $q->user_agent(); my $now_dt = strftime "%Y-%m-%d %H:%M:%S", localtime; my $lang="de"; + my $dbh = ""; my $printer_id=$R::printer_id; my $u_id=$R::u_id; @@ -49,13 +49,12 @@ sub printpre(){ my $mandant_main_id=$R::mandant_main_id; my $main_id=$R::main_id; my $ct_name2print=$R::ct_name2print; - my $wc= $1 if($R::wc =~ /(\d+\.\d+)/); - my $node = $db->get_node4multi($R::main_id,$lang); - + my $debug = 0;#print line to doc if debug print $q->start_html(-title=>'', -base=>'true', - -target=>'Printpre' + -target=>'Printpre', + -title=>"$R::ct_name2print" ); my $width="1400px"; @@ -77,7 +76,9 @@ body,html { margin:0.5em 0; } th { + font-size:0.91em; border-bottom: solid thin gray; + border-right: solid thin gray; } td { border:0px; @@ -147,127 +148,181 @@ td { //-->"; } - my $users = $db->select_users($u_id); - my $ctf = $db->get_content1("contentuser","$mandant_main_id"); - $ctf->{txt13} = $1 if($ctf->{txt13} =~ /(\d+)/); - - my $ctt = $db->get_content1("contenttrans",$c_id); - - my $ctt_users = $db->get_owner($ctt->{owner}); - my $vendor = $ctt_users->{u_name};#Login-ID - $vendor = $ctt->{txt13} if($ctt->{txt13});#full Name - my $kd_nr = " Kunden Nr.: $ctt->{int10}"; - my $mandat_nr; - $mandat_nr = " Mandatsreferenz: $ctt->{txt26}" if($ctt->{txt26} =~ /PO-/); - - my $invoice_time = $ctt->{invoice_time} || $ctt->{mtime}; - my $mtime = $lb->time4de("$invoice_time",""); - - $db->updater("contenttrans","c_id",$ctt->{c_id},"invoice_time","$invoice_time",""); - - #my $scol = "c_id"; - my $scol = "itime"; - my $i=0; - my $tplf = $db->get_tpl("201");#Firma tpl + my $tplf = $dbt->get_tpl($dbh,201);#Kunden-Faktura alias Firma tpl my @tplf_order = split /,/,$tplf->{tpl_order}; - my $logo = "$ctf->{img01}" || ""; #logging siteformat open(PMA, ">> $varenv{logdir}/Printpreview.log"); - print PMA "$now_dt --> $ct_name2print\n"; + print PMA "\n-->$now_dt --> $varenv{dbname}-$ct_name2print\n"; my $site=1; my $site_all=1; - my ($address_wc,$table_wc) = split(/\./,$wc); - $wc = $address_wc + $table_wc; - print PMA "wc: $wc = $address_wc + $table_wc\n"; - print PMA "wc: $wc\n"; - my $max_site_wc = "40"; + + my $header_top = 0; + my $footer_px = 1780; + my $footer_top = $footer_px;#end 1.site + + my $sum_paid = 0; + my $exit_table_wc = 0; + my $nullcount = 0; + my $cttpos = { c_id => 0 }; my $max_table_wc = "10"; - print PMA "max_site_wc: $max_site_wc | max_table_wc: $max_table_wc\n"; + my $break_table_wc = 0; + + my $ctf = { c_id => 0 }; + my $pref_cu = { + table => "contentuser", + fetch => "one", + c_id => $mandant_main_id, + }; + $ctf = $dbt->fetch_tablerecord($dbh,$pref_cu) if($mandant_main_id); - my $h_top = "0"; - my $footer_top = "1820";#ende der 1.seite - print PMA "top: $h_top | $footer_top\n"; + my $ctt = { c_id => 0 }; + my $pref_ctt = { + table => "contenttrans", + fetch => "one", + c_id => $c_id, + }; + $ctt = $dbt->fetch_record($dbh,$pref_ctt) if($c_id); - #1.seite - &header_big("0",$mandant_main_id,$c_id,$logo); - &data_invoice("0",$vendor,$kd_nr,$mandat_nr,$ctt->{txt00},$ct_name2print,$mtime); - - 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)); - if($break_table_wc > $max_table_wc){ - $site_all++; - print PMA "max_site_wc: $max_site_wc | max_table_wc: $max_table_wc\n"; - print PMA "site_all: $site_all if($break_table_wc > $max_table_wc)\n"; - } - - 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},$ctt->{txt00},$nullcount); - &text_footer($mandant_main_id,$footer_top,$site,$site_all,$wc); - }else{ - &text_footer($mandant_main_id,$footer_top,$site,$site_all,$wc); - } - - #2.seite - if($site_all > 1){ - #Alles horizontal absolut zum obersten Punkt ausrichten - $h_top = $footer_top + 220;# second header top, depence from footer_top - &header_small($h_top,$mandant_main_id,$logo); - $h_top +=250; - &data_invoice($h_top,$vendor,$kd_nr,$mandat_nr,$ctt->{txt00},$ct_name2print,$mtime); - $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,$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"; + #pre-count position rows + if($ctt->{int10} && $ctt->{int10} == 2){ + $max_table_wc = "41"; + #take original operator accounting c_id to collect related invoices + if($ctt->{template_id} != 208){#not equal Abrechnung + my $pref = { + table => "contenttrans", + fetch => "one", + barcode => $ctt->{barcode}, + txt00 => "Abrechnung", + }; + my $ctt_accounting = $dbt->fetch_record($dbh,$pref); + ($cttpos,$break_table_wc) = $dbt->collect_contenttrans($dbh,$ctt_accounting->{content_id}); + }else{ + ($cttpos,$break_table_wc) = $dbt->collect_contenttrans($dbh,$ctt->{c_id}); } - - #print "$h_top | $table_wc | $break_table_wc >= $max_table_wc"; - &text_description($h_top,$mandant_main_id,$ctt->{txt21},$ctt->{txt12},$ctt->{txt00},$nullcount); - $footer_top +=100; - $site++; - print PMA "$site_all,$footer_top,$site,$site_all,$wc\n"; - &text_footer($mandant_main_id,$footer_top,$site,$site_all,$wc); + }else{ + $max_table_wc = "10"; + ($cttpos,$break_table_wc) = $dbt->collect_contentpos("contenttrans",$ctt->{c_id}); } - ########## - # + print PMA "break_table_wc: $break_table_wc > max_table_wc:$max_table_wc\n"; + + if($break_table_wc > $max_table_wc){ + $site_all = $break_table_wc / $max_table_wc; + $site_all += 1 if($site_all =~ /\d\.\d/); + $site_all = sprintf('%.1d',$site_all); + print PMA "2) site_all: $site_all if($break_table_wc > $max_table_wc)\n"; + } + + if(1==1){ + for($site=1; $site <= $site_all; $site++){ + #1.site + if($site == 1){ + print PMA "1.$site) header_big header_top: $header_top | $site\n"; + &header_big(\%varenv,$ctf,$ctt,$header_top); + &data_invoice(\%varenv,$ctt,$ct_name2print,$header_top); + + #operator invoices int02=2 Operator-Faktura else position accounting + if($ctt->{int10} && $ctt->{int10} == 2){ + my $ctf_operator = { c_id => 0 }; + my $pref_cuop = { + table => "contentuser", + fetch => "one", + c_id => 2, + }; + $ctf_operator = $dbt->fetch_tablerecord($dbh,$pref_cuop); + + ($break_table_wc,$nullcount) = &accounting_data_table(\%varenv,$ctf_operator,$ctt,$cttpos,$break_table_wc,$max_table_wc,$header_top); + }else{ + ($sum_paid,$break_table_wc,$nullcount) = &data_table(\%varenv,$ctf,$ctt,$cttpos,$sum_paid,$break_table_wc,$max_table_wc,$header_top); + } + + &text_description(\%varenv,$ctf,$ctt,$nullcount,0); + print PMA "1.$site) text_footer: footer_top: $footer_top | $site/$site_all\n"; + &text_footer(\%varenv,$ctf,$ctt,$footer_top,$site,$site_all); + } + # > 2.site + else{ + my $header_px = 2000; + $header_top = $header_px;#2. site + + $header_top = $header_px * ($site -1); + $footer_top = $footer_px * $site + ($header_px - $footer_px -10); + $footer_top = $footer_px * $site + ($site * (0.65 * ($header_px - $footer_px))) if($site > 2); + + print PMA "2.$site) text_footer footer_top: $footer_top | $site/$site_all\n"; + &text_footer(\%varenv,$ctf,$ctt,$footer_top,$site,$site_all); + + print PMA "2.$site) header_small header_top: $header_top | $site/$site_all\n"; + &header_small(\%varenv,$ctf,$header_top); + + $header_top = $header_top + 250; + &data_invoice(\%varenv,$ctt,$ct_name2print,$header_top); + + #table_break + $break_table_wc -= $max_table_wc; + print PMA "2.$site) break_table_wc: $break_table_wc > max_table_wc:$max_table_wc\n"; + $header_top +=60; + #operator invoices int02=2 Operator-Faktura else position accounting + if($ctt->{int10} && $ctt->{int10} == 2){ + my $ctf_operator = { c_id => 0 }; + my $pref_cuop = { + table => "contentuser", + fetch => "one", + c_id => 2, + }; + $ctf_operator = $dbt->fetch_tablerecord($dbh,$pref_cuop); + + ($exit_table_wc,$nullcount) = &accounting_data_table(\%varenv,$ctf_operator,$ctt,$cttpos,$break_table_wc,$max_table_wc,$header_top); + }else{ + (my $sum_paidxxx,$exit_table_wc,$nullcount) = &data_table(\%varenv,$ctf,$ctt,$cttpos,$sum_paid,$break_table_wc,$max_table_wc,$header_top); + } + }#end > 2.site + } + } + close PMA; - #Briefkopf + #header_small sub header_small(){ - my ($h_top,$mandant_main_id,$logo) = @_; - my $position; - my $h_toppx = "$h_top" . "px"; - $position = "position:absolute; top: $h_toppx;" if($h_top); + my $varenv = shift; + my $ctf = shift; + my $header_top = shift || 0; + + my $position = ""; + my $header_toppx = "$header_top" . "px"; + $position = "position:absolute; top: $header_toppx;" if($header_top); + my $line = ""; + $line = $header_top if($debug); my $height = "120px;"; my $margin = "0 0 100px 0;"; - if($dbt->{operator}->{$varenv{dbname}}->{project} =~ /Bayern|Freiburg/){ + if($dbt->{operator}->{$varenv->{dbname}}->{project} =~ /Bayern|Freiburg/){ $height = "200px;"; $margin = "0;"; } - print $q->div({-style=>"$position width:$width;text-align:right;border:0px solid black;margin:$margin"},$q->img({-src=>"$varenv{metahost}/img/$logo",-height=>"$height"})),"\n"; - } + print $q->div({-style=>"$position width:$width;text-align:right;border:0px solid black;margin:$margin"},"$line",$q->img({-src=>"$varenv->{metahost}/img/$ctf->{img01}",-height=>"$height"})),"\n"; + }#end header_small - #Briefkopf + Adresse + #header_big sub header_big(){ - my ($h_top,$mandant_main_id,$c_id,$logo) = @_; - $ctf = $db->get_content1("contentuser","$mandant_main_id"); - my $ctt = $db->get_content1("contenttrans",$c_id); + my $varenv = shift; + my $ctf = shift; + my $ctt = shift; + my $header_top = shift || 0; + $ctt->{txt01} = $lb->newline($ctt->{txt01},"","0"); + my $line = ""; + $line = $header_top if($debug); my $height = "120px;"; my $margin = "0 0 100px 0;"; - if($dbt->{operator}->{$varenv{dbname}}->{project} =~ /Bayern|Freiburg/){ + if($dbt->{operator}->{$varenv->{dbname}}->{project} =~ /Bayern|Freiburg/){ $height = "200px;"; $margin = "0;"; } - print $q->div({-style=>"width:$width;text-align:right;border:0px solid black;margin:$margin"},$q->img({-src=>"$varenv{metahost}/img/$logo",-height=>"$height"})),"\n"; + + print $q->div({-style=>"width:$width;text-align:right;border:0px solid black;margin:$margin"},$q->img({-src=>"$varenv->{metahost}/img/$ctf->{img01}",-height=>"$height"})),"\n"; print $q->start_table({-width=>'100%',-border=>'0',-align=>'center', -cellpadding=>'3', -cellspacing=>'0'}),"\n"; print "\n"; @@ -312,45 +367,268 @@ td { print ""; print $q->end_table; - } - #end Adresse + }#end header_big + #head line sub data_invoice(){ - my ($h_top,$vendor,$kd_nr,$mandat_nr,$node_name,$ct_name2print,$mtime) = @_; - my $position; - my $h_toppx = "$h_top" . "px"; - $position = "position:absolute; top: $h_toppx;" if($h_top); - $node_name =~ s/steuerfrei//; + my $varenv = shift; + my $ctt = shift; + my $ct_name2print = shift; + my $header_top = shift || 0; + my $line = ""; + $line = $header_top if($debug); - my $praefix = "$varenv{praefix}"; + my $kd_nr = " Kunden Nr. $ctt->{int10}" if($ctt->{txt00} ne "Abrechnung"); + my $mandat_nr = ""; + $mandat_nr = " Mandatsreferenz: $ctt->{txt26}" if($ctt->{txt26} =~ /\w{2}-/); + + my $invoice_time = $ctt->{invoice_time} || $ctt->{mtime}; + my $update_ctt = { + table => "contenttrans", + pay_time => "$invoice_time", + }; + $dbt->update_record($dbh,$update_ctt,$ctt); + my $mtime = $lb->time4de("$invoice_time",""); + + my $position = ""; + my $header_toppx = "$header_top" . "px"; + $position = "position:absolute; top: $header_toppx;" if($header_top); print $q->div({-style=>"width:$width;$position border: 0px solid black;"}, - $q->span({-style=>'font-size:1.5em;margin:0.5em 0 0.5em 0.5em;'},"$node_name"), - $q->span({-style=>'font-size:1em;margin:0.5em 0.5em 0.5em 0;'},"Nr.: $praefix-$ct_name2print"), + $q->span({-style=>'font-size:1.5em;margin:0.5em 0 0.5em 0.5em;'},"$line","$ctt->{txt00}"), + $q->span({-style=>'font-size:1em;margin:0.5em 0.5em 0.5em 0;'},"Nr. $varenv->{dbname}-$ct_name2print"), $q->span({-style=>'float:right;text-align:right;font-size:1em;margin:0.5em 0 0.5em 0;'},"Datum: $mtime "), $q->span({-style=>'font-size:1em;margin:0.5em;'}," $kd_nr"), $q->span({-style=>'font-size:1em;margin:0.5em;'}," $mandat_nr"), - #$q->span({-style=>'font-size:1.1em;margin:0.5em;'},$q->img({-src=>"$varenv{metahost}/pdf/barcode-$ctt->{ct_name}.jpeg", -height=>'60px;'})), ); } + #operator accounting invoice + sub accounting_data_table { + my $varenv = shift; + my $ctf = shift; + my $ctt = shift; + my $cttpos = shift; + my $break_table_wc = shift || 0; + my $max_table_wc = shift || 0; + my $header_top = shift || 0; + my @tpl_order = (); + + #int9x are not in db + if($ctt->{txt00} eq "Rechnung"){ + @tpl_order = ("c_id=ID","int01=Summe Einzug","state=Zahlungsart","int93=TeilRad Gebühren","int98=TeilRad Gebühren 19%","int100=Summe"); + if($varenv->{dbname} eq "sharee_sx"){ + @tpl_order = ("c_id=ID","int01=Summe Einzug","state=Zahlungsart","int93=TeilRad Gebühren","int98=TeilRad Gebühren 19%","int94=TeilRad Disagio","int99=TeilRad Disagio 19%","int100=Summe"); + } + } + #default to Abrechnung + else{ + @tpl_order = ("c_id=ID","int01=Summe Einzug","state=Zahlungsart","int93=TeilRad Gebühren","int98=TeilRad Gebühren 19%","int94=payone Disagio","int95=payone Transaktion","int96=payone Zahlungs-meldung","int97=payone Kreditkarte Zuordnung","int02=Summe Gutschrift"); + if($varenv->{dbname} eq "sharee_sx"){ + @tpl_order = ("c_id=ID","int01=Summe Einzug","state=Zahlungsart","int93=TeilRad Gebühren","int98=TeilRad Gebühren 19%","int94=TeilRad Disagio","int99=TeilRad Disagio 19%","int02=Summe Gutschrift"); + } + } + + my $sum_operatorcredit=0; + my $diff19 = 100 + 19; + my $sum_umst19=0; + my $i=0; + my $j=0; + my $rows = 0; + + my $header_toppx = "$header_top" . "px"; + my $position = "";; + $position = "position:absolute; top: $header_toppx;" if($header_top); + my $line = ""; + $line = $header_top if($debug); + print "\n
\n"; + print $q->start_table({ -border=>'0', -width=>"$width",-align=>'center', -cellpadding=>'3', -cellspacing=>'0'}),"\n"; + + my $tc=0; + print $q->Tr(); + #print $q->th("$line Pos."),"\n"; + foreach (@tpl_order){ + my ($key,$val) = split /=/,$_; + $tc++; + $val = "$line $val" if($key eq "c_id"); + print $q->th({-class=>'tdint'},"$val"); + } + + foreach my $id (sort { $cttpos->{$b}->{c_id} <=> $cttpos->{$a}->{c_id} } keys(%$cttpos)){ + #print Dumper($cttpos->{$id}); exit; + my $oac = { c_id => 0 }; + $oac = $pri->operator_accounting2calc($varenv,$cttpos->{$id},$ctf); + $oac->{int01} = sprintf('%.2f', $oac->{int01}); + + $j++; + #if($j<=$max_table_wc || $break_table_wc) + if($j<=$max_table_wc){ + $now_dt =~ s/[-:\s]//g; + open(CSV, ">> $varenv->{pdf}/$ctt->{txt00}-$ctt->{c_id}-$now_dt.csv") or die "Can't opencsv\n"; + + $i++; + print $q->Tr(),"\n"; + #print $q->td({-class=>'tdint'},"$i"),"\n"; + + foreach (@tpl_order){ + my ($key,$val) = split /=/,$_; + $cttpos->{$id}->{$key} = $q->unescapeHTML($cttpos->{$id}->{$key}); + my $txtstyle = "text-align:left;min-width:100px;"; + if($key =~ /int\d+/){ + $txtstyle = "text-align:right;min-width:50px;"; + } + + if(1==1){ + if($key =~ /ct_name/){ + print CSV "$cttpos->{$id}->{$key};"; + #print $q->td({-class=>'tdtxt'},"\# $cttpos->{$id}->{$key} $cttpos->{$id}->{txt01}"),"\n"; + print $q->td({-class=>'tdtxt'},"\# $cttpos->{$id}->{$key}"),"\n"; + } + elsif($key =~ /c_id/){ + print CSV "$cttpos->{$id}->{$key};"; + if($debug){ + print $q->td({-class=>'tdint',-nowrap=>1},"$i) $cttpos->{$id}->{$key}"),"\n"; + }else{ + print $q->td({-class=>'tdint',-nowrap=>1},"$cttpos->{$id}->{$key}"),"\n"; + } + } + elsif($key =~ /int/){ + $oac->{$key} =~ s/\./,/; + if($key eq "int02"){ + print CSV "$oac->{$key}\n"; + }else{ + print CSV "$oac->{$key};"; + } + print $q->td({-class=>'tdint',-nowrap=>1},"$oac->{$key} €"),"\n"; + } + elsif($key =~ /state/){ + $cttpos->{$id}->{$key} =~ s/ \(payone\)//; + print CSV "$cttpos->{$id}->{$key};"; + print $q->td({-class=>'tdint',-nowrap=>1},"$cttpos->{$id}->{$key}"),"\n"; + } + elsif($key =~ /txt/){ + print CSV "$cttpos->{$id}->{$key};"; + print $q->td({-class=>'tdtxt'},"$cttpos->{$id}->{$key}"),"\n"; + } + } + } + delete $cttpos->{$id}; + close CSV; + } + } + + #Sum Endrechnung + if($break_table_wc > 0 && $break_table_wc <= $max_table_wc){ + + my $sum_parts19 = $ctt->{int01} || 0; + if($sum_parts19 && $sum_parts19 != 0){ + $sum_umst19 = $sum_parts19 / $diff19 * 19; + $sum_umst19 = $pri->round($sum_umst19); + } + my $sum_netto19 = $sum_parts19 - $sum_umst19; + $sum_netto19 = sprintf('%.2f', $sum_netto19); + $sum_netto19 =~ s/\./,/; + + my $sum_paid = $sum_parts19; + $sum_paid = $pri->round($sum_paid); + $sum_paid = sprintf('%.2f', $sum_paid); + $sum_paid =~ s/\./,/; + + $sum_parts19 = sprintf('%.2f', $sum_parts19); + $sum_umst19 = sprintf('%.2f', $sum_umst19); + $sum_umst19 =~ s/\./,/; + + my $sum_operatorcredit = $ctt->{int02} || 0; + $sum_operatorcredit = $pri->round($sum_operatorcredit); + $sum_operatorcredit = sprintf('%.2f', $sum_operatorcredit); + $sum_operatorcredit =~ s/\./,/; + + print $q->Tr(),"\n"; + print $q->td({-class=>'Oline',-colspan=>$tc}," "),"\n"; + + my $cs = $tc - 3; + my $payment_text = ""; + foreach(@tplf_order){ + my ($key,$des,$size) = split /=/,$_; + if($key =~ /txt5\d/){ + $ctf->{$key} = $q->unescapeHTML("$ctf->{$key}"); + $ctf->{$key} = $lb->newline($ctf->{$key},"",""); + $ctt->{state} =~ s/\(payone.*//; + if($des =~ /$ctt->{state}/){ + if($sum_parts19 < 0){ + $payment_text = "$ctf->{txt58}"; + }else{ + $payment_text = "$ctf->{$key}"; + } + } + } + } + print "\n"; + print "$payment_text\n"; + + ###print sum + print "\n"; + print $q->start_table({-style=>'border:1px solid silver;', -border=>'0', -width=>'100%',-align=>'center', -cellpadding=>'3', -cellspacing=>'0'}),"\n"; + + #Summe Betreiber Rechnung + if($ctt->{template_id} != 208){#not equal Abrechnung + print $q->Tr("\n"); + print $q->td({-class=>'tdint',-colspan=>2},"Nettobetrag"); + print $q->td({-class=>'tdint',-nowrap=>"1"},"$sum_netto19 €"); + + if($sum_netto19 != 0){ + print $q->Tr("\n"); + print $q->td({-class=>'tdint',-colspan=>2,-nowrap=>"1"},"19% UmSt auf $sum_netto19 €"); + print $q->td({-class=>'tdint',-nowrap=>"1"},"$sum_umst19 €"); + } + + print $q->Tr("\n"); + print $q->td({-class=>'tdsum',-colspan=>2},"Summe $ctt->{state}"); + print $q->td({-class=>'tdint',-nowrap=>"1"},"$sum_paid €"); + } + #Summe Betreiber Abrechnung (Gutschrift) + else{ + print $q->Tr("\n"); + print $q->td({-class=>'tdsum',-colspan=>2},"Summe $ctt->{state}"); + print $q->td({-class=>'tdint',-nowrap=>"1"},"$sum_operatorcredit €"); + } + + print $q->end_table,"\n"; + print "\n"; + ###print sum end + + print "\n"; + } + + print $q->end_table,"\n"; + print "
\n"; + return ($j,$nullcount); + }#end sub accounting_data_table + + #client invoice sub data_table(){ - 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 $varenv = shift; + my $ctf = shift; + my $ctt = shift; + my $cttpos = shift; + my $sum_break = shift || 0; + my $break_table_wc = shift || 0; + my $max_table_wc = shift || 0; + my $header_top = shift || 0; + my @tpl_order = ("txt01=Beschreibung","ct_name=Nummer","date_time=Mietzeit","int03=Menge (Std:Min)","int02=Preis","int07=Rabatt","int04=Gesamt"); - my ($cttpos,$rows) = $db->collect_contentpos("contenttrans",$c_id); + #my ($cttpos,$rows) = $dbt->collect_contentpos("contenttrans",$ctt->{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 (Std:Min)","int02=Preis","int07=Rabatt","int04=Gesamt"); } } - my $h_toppx = "$h_top" . "px"; + my $header_toppx = "$header_top" . "px"; my $position; - $position = "position:absolute; top: $h_toppx;" if($h_top); + $position = "position:absolute; top: $header_toppx;" if($header_top); + my $line = ""; + $line = $header_top if($debug); print "\n
\n"; print $q->start_table({ -border=>'0', -width=>"$width",-align=>'center', -cellpadding=>'3', -cellspacing=>'0'}),"\n"; @@ -361,27 +639,12 @@ td { foreach (@tpl_order){ my ($key,$val) = split /=/,$_; $h++ if($val && $key !~ /int07/); - print $q->th({-class=>'tdint'},"$val"),"\n" if("$key" eq "ct_name"); + print $q->th({-class=>'tdint'},"$line $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 =~ /int02|int03|int04|int26/); } $h--; - #Übertrag Zwischensumme - #if($break_table_wc){ - # print "\n"; - # print "\n"; - # print "\n"; - # print $q->start_table({-style=>'border:1px solid silver;', -border=>'0', -width=>'100%',-align=>'center', -cellpadding=>'3', -cellspacing=>'0'}),"\n"; - # - # print $q->Tr("\n"); - # print $q->td({-class=>'tdsum',-colspan=>"$h"},"Übertrag:"); - # print $q->td({-class=>'tdint',-nowrap=>"1"},"$sum_break €"); - # print $q->end_table,"\n"; - # print "\n"; - # print "\n"; - #} - #Tablecontent (ct_name(primary key)) my $sum_parts19=0; my $diff19 = 100 + 19; @@ -389,9 +652,8 @@ td { 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->{$b}->{$scol} cmp $cttpos->{$a}->{$scol} } keys(%$cttpos)){ - my $cttpos_timestamp = $1 . $2 . $3 . "0000" if($cttpos->{$id}->{itime} =~ /(\d+)\-(\d+)\-(\d+)/); + + foreach my $id (sort { $cttpos->{$b}->{c_id} <=> $cttpos->{$a}->{c_id} } keys(%$cttpos)){ my $gesamt = 0; my $rabatt = ""; @@ -400,8 +662,8 @@ td { my $rental_feed = {}; if($cttpos->{$id}->{int35} && $cttpos->{$id}->{start_time} && $cttpos->{$id}->{end_time}){ - ($pricing,$counting) = $pri->counting_rental(\%varenv,$cttpos->{$id},"calc_price"); - $rental_feed = $pri->fetch_rentalfeed(\%varenv,$cttpos->{$id},$counting); + ($pricing,$counting) = $pri->counting_rental($varenv,$cttpos->{$id},"calc_price"); + $rental_feed = $pri->fetch_rentalfeed($varenv,$cttpos->{$id},$counting); $rabatt = $pricing->{discount}; $sum_parts19 += $pricing->{total_price}; $gesamt = $pri->round($pricing->{total_price}); @@ -469,9 +731,9 @@ td { if($cttpos->{$id}->{int26}){ $co2saving = "Einsparung
"; my $co2diff = $pri->co2calc($cttpos->{$id}); - my $sprit_price = $pri->sprit2calc($cttpos->{$id}); + #my $sprit_price = $pri->sprit2calc($cttpos->{$id}); $co2saving .= "$co2diff kg CO²
"; - $co2saving .= "$sprit_price EUR
" if($sprit_price !~ /-/); + #$co2saving .= "$sprit_price EUR
" if($sprit_price !~ /-/); $cttpos->{$id}->{int26} =~ s/\./,/; $co2saving .= "bei $cttpos->{$id}->{int26} KM"; } @@ -552,8 +814,8 @@ td { $sum_umst19 =~ s/\./,/; - print $q->Tr(),"\n"; - print $q->td({-class=>'Oline',-colspan=>6}," "),"\n"; + print $q->Tr(),"\n"; + print $q->td({-class=>'Oline',-colspan=>6}," "),"\n"; print "\n"; print "$payment_text\n"; @@ -576,13 +838,8 @@ td { print $q->td({-class=>'tdint',-nowrap=>"1"},"19% UmSt auf $sum_netto19 €:"),"\n"; print $q->td({-class=>'tdint',-nowrap=>"1"},"$sum_umst19 €"),"\n"; } - - #Zwischensumme - #}else{ - # print $q->Tr(),"\n"; - # print $q->td({-class=>'tdsum',-colspan=>"$h"},"Zwischensumme:"),"\n"; - # print $q->td({-class=>'tdint',-nowrap=>"1"},"$sum_paid €"),"\n"; } + print $q->end_table,"\n"; print "\n"; print "\n"; @@ -590,17 +847,23 @@ td { print $q->end_table,"\n"; print "
\n"; return ("$sum_paid","$j","$nullcount"); - } + }#end sub data_table #Beschreibungs-Text sub text_description(){ - 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"; - $position = "position:absolute; top: $h_toppx;" if($h_top); + my $varenv = shift; + my $ctf = shift; + my $ctt = shift; + my $nullcount = shift || 0; + my $header_top = shift || 0; - print "\n
\n"; + my $position = ""; + my $header_toppx = "$header_top" . "px"; + $position = "position:absolute; top: $header_toppx;" if($header_top); + my $line = ""; + $line = $header_top if($debug); + + print "\n
$line\n"; print $q->start_table({-style=>"margin-top:0.5em;", -border=>'0', -width=>'100%',-align=>'center', -cellpadding=>'0', -cellspacing=>'0'}); #Frei-Text @@ -610,11 +873,11 @@ td { print $q->td({-style=>"$style",-colspan=>3},"In diesem Zeitraum gab es $nullcount kostenfreie Buchungsvorgänge."); } - if($ctt_txt12){ - $ctt_txt12 = $q->unescapeHTML("$ctt_txt12"); - $ctt_txt12 = $lb->newline($ctt_txt12,"",""); + if($ctt->{txt12}){ + $ctt->{txt12} = $q->unescapeHTML("$ctt->{txt12}"); + $ctt->{txt12} = $lb->newline($ctt->{txt12},"",""); print $q->Tr(); - print $q->td({-style=>"$style",-colspan=>3},"$ctt_txt12"); + print $q->td({-style=>"$style",-colspan=>3},"$ctt->{txt12}"); } #Text & Vorbelegungen print $q->Tr(); @@ -625,10 +888,9 @@ td { $ctf->{$key} = $q->unescapeHTML("$ctf->{$key}"); $ctf->{$key} = $lb->newline($ctf->{$key},"",""); my @rechnungstext = split(/\
/,$ctf->{$key}); - if($ctt_txt21 =~ /$key/){ + if($ctt->{txt21} =~ /$key/){ foreach(@rechnungstext){ $style = "padding:0.4em;text-align:left;font-size:1em;"; - $style = "padding:0.4em;text-align:left;font-size:1em;" if($_ =~ s/\// && $node_name ne "Rückgabe"); print $q->Tr(); print $q->td({-style=>"$style",-colspan=>3},"$_"); } @@ -638,29 +900,53 @@ td { print $q->end_table; print "
\n"; - } + }#end text_description + #site footer sub text_footer(){ - my ($mandant_main_id,$top,$site,$site_all,$wc) = @_; - my $ctf = $db->get_content1("contentuser","$mandant_main_id"); - $ctf->{txt01} = $q->unescapeHTML("$ctf->{txt01}"); + my $varenv = shift; + my $ctf = shift; + my $ctt = shift; + my $footer_top = shift || 0; + my $site = shift || 1; + my $site_all = shift || 1; + my @txt11 = split (/;/,"$ctf->{txt11}");#Tel usw. my @txt12 = split (/;/,"$ctf->{txt12}");#Geschäftsführer my @txt19 = split (/;/,"$ctf->{txt19}");#Bank usw. - $top *= $site; - my $top2 = $top + 120; - $top .= "px"; + my $top2 = $footer_top + 120; + $footer_top .= "px"; $top2 .= "px"; - my $zeilen; - #$zeilen = "Top: $top , Zeilen: $wc , " if($wc); + print PMA "sub text_footer --> footer_top: $footer_top | top2: $top2\n"; + my $line = ""; + $line = $footer_top if($debug); - #if($logo =~ /empty/){ - # print $q->div({-style=>"min-width:1799px;position:absolute;top:$top;"},""); + #if($ctf->{img01} =~ /empty/){ + # print $q->div({-style=>"min-width:1799px;position:absolute;top:$footer_top;"},""); #}else{ - print "
"; + print "
$line\n"; + if($ctt->{txt00} eq "Abrechnung"){ + my $tplop = $dbt->get_tpl($dbh,"196");#Operator-Faktura + my @tplop_order = split /,/,$tplop->{tpl_order}; + foreach(@tplop_order){ + my ($key,$val,$size,$unit) = split /=/,$_; + if($key =~ /int(\d+)/){ + #take fee values used by creating operator accounting invoice + my $count_key = $1 + 20;#cu.int to ctt.int + my $ctt_key = "int" . $count_key; + if($ctt->{$ctt_key}){ + $ctt->{$ctt_key} =~ s/\./,/; + print $q->span({-style=>'padding:0.2em;text-align:center;font-size:0.81em;'},"$val $ctt->{$ctt_key} $unit | "),"\n"; + } + } + } + print "
\n"; + print "
\n"; + } + print $q->start_table({-width=>'100%',-border=>'0',-align=>'center', -cellpadding=>'2', -cellspacing=>'0'}); print ""; @@ -735,8 +1021,7 @@ td { #end Adresse #} my $debug = ""; - #$debug = "(address_wc:$address_wc + table_wc:$table_wc) site_all:$site_all++ | break_table_wc:$break_table_wc if((wc:$wc > max_site_wc:$max_site_wc) || (table_wc:$table_wc > max_table_wc:$max_table_wc)) ... (sum_paid:$sum_paid,break_table_wc:$break_table_wc) = &data_table" if($ctt->{owner} eq "101"); - print $q->div({-style=>"text-align:right;width:$width;position:absolute;top:$top2;font-size:0.61em;"},"$debug $zeilen Seite: $site/$site_all"); + print $q->div({-style=>"text-align:right;width:$width;position:absolute;top:$top2;font-size:0.61em;"},"$debug Seite: $site/$site_all"); } print $q->end_html; diff --git a/copri4/main/src/Tpl/Address3.pm b/copri4/main/src/Tpl/Address3.pm index b2aed8a..bd4ba84 100755 --- a/copri4/main/src/Tpl/Address3.pm +++ b/copri4/main/src/Tpl/Address3.pm @@ -44,19 +44,30 @@ sub tpl(){ my %ib = $but->ibuttons(); my $line_count1 = 0; my $line_count2 = 0; + my $dbh = ""; #Kunden Faktura ex Firma - my $ctf = $db->get_content1("contentuser",$dbt->{shareedms_conf}->{parent_id}); + #my $ctf = $db->get_content1("contentuser",$dbt->{shareedms_conf}->{parent_id}); + my $ctf = { c_id => 0 }; + my $pref_cu = { + table => "contentuser", + fetch => "one", + c_id => $dbt->{shareedms_conf}->{parent_id}, + }; + $ctf = $dbt->fetch_tablerecord($dbh,$pref_cu); - #my $rel4tpl = $db->get_rel4tpl("",$lang,$users_dms->{c_id4trans},$node_meta->{tpl_id}); - my $rel4tpl = $db->get_rel4tpl("",$lang,$users_dms->{c_id4trans},$users_dms->{tpl_id4trans}); - my @tpl_order = split /,/,$rel4tpl->{tpl_order}; + #my $rel4tpl = $db->get_rel4tpl("",$lang,$users_dms->{c_id4trans},$users_dms->{tpl_id4trans}); + my $ctt = { c_id => 0 }; + my $pref = { + table => "contenttrans", + fetch => "one", + c_id => $users_dms->{c_id4trans}, + }; + $ctt = $dbt->fetch_record($dbh,$pref); - my $ctx = { c_id => 0 }; my $ctadr = { c_id => 0 }; my $rel_adr = { rel_id => 0 }; - $ctx = $db->get_content1("contenttrans",$users_dms->{c_id4trans}); - my $c_idadr = $ctx->{int10} || "";#c_id orig from contentadr + my $c_idadr = $ctt->{int10} || "";#c_id orig from contentadr if($node_meta->{tpl_id} == 208){ $ctadr = $db->get_content1("contentuser","2"); @@ -65,11 +76,9 @@ sub tpl(){ $rel_adr = $db->get_rel4tpl("","$lang","$c_idadr","202"); } - my $ctt = $ctx; if(("$R::trans2edit" eq "client" && $R::c_idadr) || ($R::ct_trans eq "add_transadr")){ $ctadr = $db->get_content1("contentadr",$R::c_idadr); $c_idadr = $ctadr->{c_id}; - $ctt->{int03} = $ctadr->{int03}; $ctt->{txt01} = $ctadr->{txt01}; $ctt->{txt03} = $ctadr->{txt03}; $ctt->{txt06} = $ctadr->{txt06}; @@ -103,12 +112,12 @@ print<{main_id}; + my $main_id = $ctt->{main_id}; my $set_main_id = $dbt->{shareedms_conf}->{invoice}; print "\n
\n"; - if(!$ctx->{c_id}){ + if(!$ctt->{c_id}){ $lb->failure3("Das Formular wurde gelöscht bzw. ist nicht vorhanden"); } @@ -133,28 +142,33 @@ EOF $buchen_users = $db->get_content1("contentadr",$ctt->{owner}); } - $set_main_id=$main_id if($rel4tpl->{main_id} > "300000"); + $set_main_id=$main_id if($ctt->{main_id} > "300000"); print $q->hidden(-name=>'set_main_id', -override=>'1', -value=>"$set_main_id"); - print $q->span({-style=>'margin:0em 0.5em 0 0.5em;padding:0.5em 3em;background-color:white;border:solid thin gray;position:absolute;left:3px;'}, "$ctx->{txt00}"); + print $q->span({-style=>'margin:0em 0.5em 0 0.5em;padding:0.5em 3em;background-color:white;border:solid thin gray;position:absolute;left:3px;'}, "$ctt->{txt00}"); print "\n"; - print $q->b({-style=>'padding:0 1em;'}, "\# $ctx->{ct_name}"), "\n"; - if($ctx->{ct_name} =~ /\d+/ && $ctx->{txt00} eq "Storno"){ + print $q->b({-style=>'padding:0 1em;'}, "\# $ctt->{ct_name}"), "\n"; + if($ctt->{ct_name} =~ /\d+/ && $ctt->{txt00} eq "Storno"){ print $but->singlesubmit3("ct_trans","set_workflow2invoice","","",""),"\n"; print $q->hidden(-name=>'set_main_id4workflow', -override=>'1', -value=>"300008"), "\n"; } - if($ctx->{ct_name} =~ /\d+/ && $ctx->{txt00} eq "Rechnung"){ + if($ctt->{ct_name} =~ /\d+/ && $ctt->{txt00} eq "Rechnung"){ print $but->singlesubmit3("ct_trans","set_workflow2storno","","",""), "\n"; print $q->hidden(-name=>'set_main_id4workflow', -override=>'1', -value=>"300009"), "\n"; } + if($ctt->{ct_name} =~ /\d+/ && $ctt->{txt00} eq "Abrechnung"){ + print $but->singlesubmit3("ct_trans","set_accounting2invoice","","",""), "\n"; + print $q->hidden(-name=>'set_main_id4workflow', -override=>'1', -value=>"300008"), "\n"; + } + print "\n"; if(!$ctt->{int01} || $ctt->{ct_name} =~ /-/){ print $q->span({-style=>'margin:0 0.2em;position:absolute;right:3px;'}, $but->singlesubmit3("ct_trans","print_pdf","","","")," $buchen_users->{txt01} / $invoice_time ", $but->singlesubmit7("ct_trans","remove_chk4rel","$ib{remove_chk4rel}","")),"\n"; - print $q->hidden(-name=>'c_id', -override=>'1', -value=>"$rel4tpl->{content_id}"); - print $q->hidden(-name=>'template_id', -override=>'1', -value=>"$rel4tpl->{template_id}"); - print $q->hidden(-name=>'main_id', -override=>'1', -value=>"$rel4tpl->{main_id}"); - print $q->hidden(-name=>'rel_id', -override=>'1', -value=>"$rel4tpl->{rel_id}"); + print $q->hidden(-name=>'c_id', -override=>'1', -value=>"$ctt->{content_id}"); + print $q->hidden(-name=>'template_id', -override=>'1', -value=>"$ctt->{template_id}"); + print $q->hidden(-name=>'main_id', -override=>'1', -value=>"$ctt->{main_id}"); + print $q->hidden(-name=>'rel_id', -override=>'1', -value=>"$ctt->{rel_id}"); }else{ print $q->span({-style=>'margin:0 0.2em;position:absolute;right:3px;'}, $but->singlesubmit3("ct_trans","print_pdf","","","")," $buchen_users->{txt01} / $invoice_time "),"\n"; } @@ -165,13 +179,13 @@ EOF print $q->hidden(-name=>'offset', -override=>'1', -value=>"$R::offset"); 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=>'c_id4trans', -override=>'1', -value=>"$ctx->{c_id}"); - print $q->hidden(-name=>'tpl_id4trans', -override=>'1', -value=>"$rel4tpl->{template_id}"); - print $q->hidden(-name=>'close_time', -override=>'1', -value=>"$ctx->{close_time}"); + print $q->hidden(-name=>'ct_name4workflow', -override=>1, -value=>"$ctt->{ct_name}"); + print $q->hidden(-name=>'c_id4trans', -override=>'1', -value=>"$ctt->{c_id}"); + print $q->hidden(-name=>'tpl_id4trans', -override=>'1', -value=>"$ctt->{template_id}"); + print $q->hidden(-name=>'close_time', -override=>'1', -value=>"$ctt->{close_time}"); print $q->end_form,"\n"; - print $q->div({-style=>'position:fixed;bottom:2%;right:1%;z-index:10;font-size:13px;'}," (c_id: $ctx->{c_id} | rel_id: $rel4tpl->{rel_id} | tpl_id: $rel4tpl->{tpl_id})"),"\n" if($users_dms->{u_id} eq $varenv{superu_id}); + print $q->div({-style=>'position:fixed;bottom:2%;right:1%;z-index:10;font-size:13px;'}," (c_id: $ctt->{c_id} | rel_id: $ctt->{rel_id} | tpl_id: $ctt->{tpl_id})"),"\n" if($users_dms->{u_id} eq $varenv{superu_id}); ########## @@ -190,11 +204,10 @@ EOF if($users_dms->{u_id} && ($R::trans2edit eq "client" || $R::ct_trans eq "add_transadr")){ #my @_anrede = ("","Frau","Herr","Firma"); - print $q->hidden(-name=>'c_id4trans', -override=>'1', -value=>"$ctx->{c_id}"),"\n"; + print $q->hidden(-name=>'c_id4trans', -override=>'1', -value=>"$ctt->{c_id}"),"\n"; print $q->hidden(-name=>'int10', -override=>'1', -value=>"$c_idadr"),"\n"; print $q->hidden(-name=>'c_idadr', -override=>'1', -value=>"$c_idadr"),"\n"; - print $q->hidden(-name=>'int03', -override=>'1', -value=>"$ctt->{int03}"),"\n"; - print $q->hidden(-name=>'rel_id', -override=>'1', -value=>"$rel4tpl->{rel_id}"),"\n"; + print $q->hidden(-name=>'rel_id', -override=>'1', -value=>"$ctt->{rel_id}"),"\n"; print $q->Tr(),"\n"; print ""; @@ -227,10 +240,10 @@ EOF }elsif($users_dms->{u_id}){ print $q->Tr(),"\n"; - if(!$ctx->{close_time} && $node_meta->{template_id} == 218){ + if(!$ctt->{close_time} && $node_meta->{template_id} == 218){ print ""; print $but->singlesubmit2glyph("trans2edit","client","Kunden bearbeiten","background-color:white;"),"\n"; - print $q->hidden(-name=>'c_id4trans', -override=>'1', -value=>"$ctx->{c_id}"),"\n"; + print $q->hidden(-name=>'c_id4trans', -override=>'1', -value=>"$ctt->{c_id}"),"\n"; #from json_selectadr print $q->hidden(-id=>'c_idadr', -name=>"c_idadr", -override=>'1'),"\n"; print $q->hidden(-id=>'vorname_name', -name=>"vorname_name", -override=>'1'),"\n"; @@ -272,15 +285,23 @@ EOF print "\n"; print $q->start_table({-class=>'list', -border=>'0', -width=>'100%',-align=>'left', -cellpadding=>'0', -cellspacing=>'0'}),"\n"; if($node_meta->{tpl_id} == 208){ - my $tplop = $db->get_tpl("196");#Operator-Faktuar + my $tplop = $dbt->get_tpl($dbh,"196");#Operator-Faktura my @tplop_order = split /,/,$tplop->{tpl_order}; foreach(@tplop_order){ my ($key,$val,$size,$unit) = split /=/,$_; - if($key =~ /int/){ - $ctadr->{$key} =~ s/\./,/; + if($key =~ /int(\d+)/){ + #take fee values used by creating operator accounting invoice + my $count_key = $1 + 20;#cu.int to ctt.int + my $ctt_key = "int" . $count_key; + $ctt->{$ctt_key} =~ s/\./,/; print $q->Tr(),"\n"; print $q->td({-class=>'tdescr', -style=>'width:50%;'},"$val"),"\n"; - print $q->td({-class=>'tdval'},"$ctadr->{$key} $unit"),"\n"; + if($ctt->{$ctt_key}){ + $ctt->{$ctt_key} =~ s/\./,/; + print $q->td({-class=>'tdval'},"$ctt->{$ctt_key} $unit"),"\n"; + }else{ + print $q->td({-class=>'tdval'},""),"\n"; + } } } }else{ @@ -320,10 +341,10 @@ EOF print "\n"; #operator invoices else position accounting - if($node_meta->{tpl_id} == 208){ - $line_count2 = $trin->tpl($node_meta,$users_dms,$set_main_id,$rel4tpl,$return); + if($ctt->{template_id} == 208 || $ctt->{int10} == 2){ + $line_count2 = $trin->tpl($node_meta,$users_dms,$set_main_id,$ctt,$return); }else{ - $line_count2 = $transp->tpl($node_meta,$users_dms,$set_main_id,$rel4tpl,$return); + $line_count2 = $transp->tpl($node_meta,$users_dms,$set_main_id,$ctt,$return); } print "\n"; @@ -335,7 +356,7 @@ EOF print $q->start_form(),"\n"; - print $q->hidden(-name=>'c_id4trans', -override=>'1', -value=>"$ctx->{c_id}"); + print $q->hidden(-name=>'c_id4trans', -override=>'1', -value=>"$ctt->{c_id}"); print $q->hidden(-name=>'set_main_id', -override=>'1', -value=>"$set_main_id"),"\n"; print "\n"; @@ -355,9 +376,9 @@ EOF print $q->td({-class=>'tdval4',-colspan=>'2'},$q->textarea(-class=>'etxt',-name=>'txt23', -default=>"$ctt->{txt23}", -rows=>6, -columns=>65)),"\n"; my $ebutton = "ebutton"; - $ebutton = "ebutton4" if($ctx->{ct_name} && $ctx->{ct_name} =~ /\d+/ && !$R::trans2edit && !$ctt->{txt12} && $ctt->{txt21} && $ctt->{txt21} !~ /\,/); + $ebutton = "ebutton4" if($ctt->{ct_name} && $ctt->{ct_name} =~ /\d+/ && !$R::trans2edit && !$ctt->{txt12} && $ctt->{txt21} && $ctt->{txt21} !~ /\,/); - if($ctx->{close_time}){ + if($ctt->{close_time}){ print $q->Tr(),"\n"; print $q->td({-class=>'tdval',-colspan=>2}, $but->singlesubmit7("ct_trans","save_text_internas","$ib{save_text}","","","$ebutton")),"\n"; @@ -397,12 +418,12 @@ EOF } ### - print $q->hidden(-name=>'c_id4trans', -override=>'1', -value=>"$ctx->{c_id}"),"\n"; + print $q->hidden(-name=>'c_id4trans', -override=>'1', -value=>"$ctt->{c_id}"),"\n"; print $q->hidden(-name=>'set_main_id', -override=>'1', -value=>"$set_main_id"),"\n"; my $ebutton = "ebutton"; - $ebutton = "ebutton4" if($ctx->{ct_name} && $ctx->{ct_name} =~ /\d+/ && !$R::trans2edit && !$ctt->{txt12} && $ctt->{txt21} !~ /\,/); + $ebutton = "ebutton4" if($ctt->{ct_name} && $ctt->{ct_name} =~ /\d+/ && !$R::trans2edit && !$ctt->{txt12} && $ctt->{txt21} !~ /\,/); print $q->Tr(),"\n"; - print $q->td({-style=>'font-size:0.81em;padding:0.3em 0em;border:0px;',-colspan=>2}, $but->singlesubmit7("ct_trans","save_text","$ib{save_text}","","","$ebutton"),"$formular_text"),"\n" if(!$ctx->{close_time}); + print $q->td({-style=>'font-size:0.81em;padding:0.3em 0em;border:0px;',-colspan=>2}, $but->singlesubmit7("ct_trans","save_text","$ib{save_text}","","","$ebutton"),"$formular_text"),"\n" if(!$ctt->{close_time}); print $q->end_table,"\n"; print "\n"; @@ -417,7 +438,7 @@ EOF my $line_count = "$line_count1.$line_count2"; #print $q->div({style=>'font-size:0.81em;'},"line to print -> address+text: $line_count1 | table: $line_count2"),"\n"; print "
\n"; - $db->update_content4change2("contenttrans",$ctx->{c_id},"$line_count","int04") if($ctx->{c_id}); + $db->update_content4change2("contenttrans",$ctt->{c_id},"$line_count","int04") if($ctt->{c_id}); return $line_count; } 1; diff --git a/copri4/main/src/Tpl/BaseEdit.pm b/copri4/main/src/Tpl/BaseEdit.pm index 8f8a787..07dcb91 100755 --- a/copri4/main/src/Tpl/BaseEdit.pm +++ b/copri4/main/src/Tpl/BaseEdit.pm @@ -412,9 +412,9 @@ EOF print $q->td({-class=>'left_italic_cms'},"$des"),"\n"; my $co2saving = ""; my $co2diff = $pri->co2calc($cttpos); - my $sprit_price = $pri->sprit2calc($cttpos); + #my $sprit_price = $pri->sprit2calc($cttpos); $co2saving .= "$co2diff kg CO²
"; - $co2saving .= "$sprit_price EUR
" if($sprit_price !~ /-/); + #$co2saving .= "$sprit_price EUR
" if($sprit_price !~ /-/); $cttpos->{int26} =~ s/\./,/; $co2saving .= "bei $cttpos->{int26} KM"; print $q->td({-class=>'content1_cms'},"$co2saving"); diff --git a/copri4/main/src/Tpl/Calorin.pm b/copri4/main/src/Tpl/Calorin.pm index e7f0682..e3f5e69 100755 --- a/copri4/main/src/Tpl/Calorin.pm +++ b/copri4/main/src/Tpl/Calorin.pm @@ -208,8 +208,6 @@ sub tpl(){ my $ct4rel_part = { c_id => 0 }; $ct4rel_part = $dbt->fetch_record($dbh,$pref_cc); - my $header_style = ""; - $header_style = "border:2px solid #9f1f0e;" if($message); print $q->div({-class=>"copri_header",-style=>"background-color:$node_meta->{bg_color};"},"$path", $q->span({-style=>"padding:4px 10px;color:white;"}, " $months[$mon -1] $year", $q->a({-class=>"linknav",-style=>"padding:0 0.5em;",-title=>"Monat zurück",-href=>"?cal_delta_start=0:-1:0"}," ← "), diff --git a/copri4/main/src/Tpl/Liste3.pm b/copri4/main/src/Tpl/Liste3.pm index 8fbabbc..3a6ca60 100755 --- a/copri4/main/src/Tpl/Liste3.pm +++ b/copri4/main/src/Tpl/Liste3.pm @@ -224,7 +224,7 @@ sub tpl(){ #Faktura actions if($node_meta->{template_id} =~ /208|209|218/){ $main_id = $dbt->{shareedms_conf}->{faktura}; - $tplids = "208,209,218"; + $tplids = "218"; if($node_meta->{node_name} =~ /OPOS/){ $R::detail_search="suchen"; @@ -269,12 +269,13 @@ sub tpl(){ $main_id = 300009; $tplids = 218; } - elsif($node_meta->{node_name} eq "Abrechnung"){ + elsif($node_meta->{node_name} eq "Abrechnung" || $R::tpl_id4trans eq "208"){ $main_id = 300029; $tplids = 208; } - elsif($R::detail_search eq "suchen"){ + #search at all + if($R::detail_search eq "suchen"){ $tplids = "208,209,218"; } } @@ -301,7 +302,7 @@ sub tpl(){ $header_style = "border:2px solid #9f1f0e;" if($message); if($node_meta->{tpl_id} == 205){ - print $q->div({-class=>"copri_header",-style=>"background-color:$node_meta->{bg_color};"},"$path", $q->span({-style=>"padding:3px 10px;background-color:#86cbd7;color:white;"}, + print $q->div({-class=>"copri_header",-style=>"background-color:$node_meta->{bg_color};"},"$path", $q->span({-style=>"padding:5px 10px;background-color:#86cbd7;color:white;"}, " $months[$mon -1] $year", $q->a({-class=>"linknav",-style=>"padding:0 0.5em;",-title=>"Monat zurück",-href=>"?cal_delta_start=0:-1:0"}," ← "), $q->a({-class=>"linknav",-style=>"padding:0 0.5em;",-title=>"Monat aktuell",-href=>"?cal_today=1"},"•"), @@ -476,7 +477,7 @@ sub tpl(){ my $hstyle = "border-right: solid thin gray;border-bottom: solid thin gray;"; if($v_journal && $v_journal =~ /journal/){ - print $q->div({-style=>"background-color:silver;$hstyle"},$but->singlesubmit1("detail_search","operator_accounting","","margin:0 0 2px 20px;",""),$but->radiobox2("accounting_type","$R::accounting_type","","Pauschal (sig)","Reale Gebühren")),"\n"; + print $q->div({-style=>"background-color:silver;$hstyle"},$but->singlesubmit1("detail_search","operator_accounting","","margin:0 0 2px 20px;",""),"es dürfen nur Rechnungen mit erfolgreichem payone Einzug selektiert werden."),"\n"; } print $q->hidden(-name=>'mandant_main_id', -value=>"$dbt->{shareedms_conf}->{parent_id}"),"\n"; print $q->hidden(-name=>'tpl_id4trans', -value=>"$node_meta->{tpl_id}"),"\n"; @@ -509,7 +510,7 @@ sub tpl(){ $new_key="new_tver"; $delete_key="delete_tver"; } - if($node_meta->{parent_id} >= "200000" && !$v_journal){ + if($node_meta->{parent_id} >= "200000" && $node_meta->{template_id} =~ /202|218/){ print $q->td({-style=>"width:25px;background-color:$a_color;$hstyle"}, $but->singlesubmit2glyph("$edit","$new_key","$ib{$new_key}","background-color:$a_color;")); print $q->hidden(-name=>'open_set_main_id', -value=>"$node_meta->{main_id}") if($table =~ /contenttrans/); }else{ @@ -767,7 +768,7 @@ sub tpl(){ #permissions if($users_dms_primary->{int03} == 2 && $users_dms->{int03} == 2){ my $checked = 0; - $checked = 1 if($ct4rel->{$id}->{template_id} == 209 && $ct4rel->{$id}->{int01} > 0 && $ct4rel->{$id}->{state} =~ /payone/i && !$ct4rel->{$id}->{int14}); + #$checked = 1 if($node_meta->{template_id} == 209 && $ct4rel->{$id}->{int01} > 0 && $ct4rel->{$id}->{state} =~ /payone/i && !$ct4rel->{$id}->{int14}); print $q->td({-style=>"background-color:silver;"}, $q->checkbox(-name=>"ck4ex", -checked=>"$checked", -value=>"$ct4rel->{$id}->{c_id}", -label=>'')),"\n"; }else{ print $q->td({-style=>"background-color:silver;"}," "),"\n"; diff --git a/copri4/main/src/Tpl/TransInvoices.pm b/copri4/main/src/Tpl/TransInvoices.pm index 13f38d1..dffd820 100755 --- a/copri4/main/src/Tpl/TransInvoices.pm +++ b/copri4/main/src/Tpl/TransInvoices.pm @@ -36,7 +36,7 @@ sub tpl(){ my $node_meta = shift; my $users_dms = shift; my $set_main_id = shift; - my $rel4tpl = shift; + my $ctt = shift; my $return = shift || ""; my $q = new CGI; @@ -55,58 +55,80 @@ sub tpl(){ my $dbh = ""; my $line_count2 = 0; - my $k=0; - - my $ctf = $db->get_content1("contentuser","2");#Operator-Faktura config - my $ctt = $db->get_content1("contenttrans",$rel4tpl->{content_id}); - - my $ctadr = $db->get_content1("contentadr",$ctt->{int10}); - my $vibuchen_mtime = ""; - $vibuchen_mtime = "payone post " . $lb->time4de($ctt->{pay_time},1) . " . " if($ctt->{pay_time}); - - #int9x are not in db - my @tpl_order = ("ct_name=Rechnung","int01=Summe payone Einzug","state=Zahlungsart","int91=TeilRad Gebühren","int92=Disagio","int93=Transaktion","int02=Summe Auszahlung"); - - my $tplf = $db->get_tpl("196");#Operator-Faktuar - my @tplf_order = split /,/,$tplf->{tpl_order}; - + my $tc=0; + my $vibuchen_mtime = $lb->time4de($ctt->{mtime},1); my $txt20 = $R::txt20 || $ctt->{txt20} || "";#Leistungsdatum my $int05 = $R::int05 || $ctt->{int05} || "";#manuell - my $cttpos = { c_id => 0 }; my $rows = 0; + my @tpl_order = (); + my $cttpos = { c_id => 0 }; - #collects invoices - ($cttpos,$rows) = $dbt->collect_contenttrans($dbh,$rel4tpl->{content_id}); + my $ctf = { c_id => 0 }; + my $pref_cu = { + table => "contentuser", + fetch => "one", + c_id => $dbt->{shareedms_conf}->{parent_id}, + }; + $ctf = $dbt->fetch_tablerecord($dbh,$pref_cu); - #maybe sum payment types - #foreach my $id (keys(%$cttpos)){ - # if(ref($cttpos->{$id}) eq "HASH"){ - # if($cttpos->{$id}->{int26}){ - # } - # } - #} + my $ctf_operator = { c_id => 0 }; + my $pref_cuop = { + table => "contentuser", + fetch => "one", + c_id => 2, + }; + $ctf_operator = $dbt->fetch_tablerecord($dbh,$pref_cuop); - print $q->start_table({-class=>'list', -border=>'0', -width=>'100%',-align=>'left', -cellpadding=>'3', -cellspacing=>'0'}); + #take original operator accounting c_id to collect related invoices + if($ctt->{template_id} != 208){#not equal Abrechnung + my $pref = { + table => "contenttrans", + fetch => "one", + barcode => $ctt->{barcode}, + txt00 => "Abrechnung", + }; + my $ctt_accounting = $dbt->fetch_record($dbh,$pref); + ($cttpos,$rows) = $dbt->collect_contenttrans($dbh,$ctt_accounting->{content_id}); + #int9x are not in db + @tpl_order = ("c_id=ID","int01=Summe Einzug","state=Zahlungsart","int93=TeilRad Gebühren","int98=TeilRad Gebühren 19%","int100=Summe"); + if($varenv{dbname} eq "sharee_sx"){ + @tpl_order = ("c_id=ID","int01=Summe Einzug","state=Zahlungsart","int93=TeilRad Gebühren","int98=TeilRad Gebühren 19%","int94=TeilRad Disagio","int99=TeilRad Disagio 19%","int100=Summe"); + } + } + #default to Abrechnung + else{ + ($cttpos,$rows) = $dbt->collect_contenttrans($dbh,$ctt->{content_id}); + #int9x are not in db + @tpl_order = ("c_id=ID","int01=Summe Einzug","state=Zahlungsart","int93=TeilRad Gebühren","int98=TeilRad Gebühren 19%","int94=payone Disagio","int95=payone Transaktion","int96=payone Zahlungsmeldung","int97=payone Kreditkarte Zuordnung","int02=Summe Gutschrift"); + if($varenv{dbname} eq "sharee_sx"){ + @tpl_order = ("c_id=ID","int01=Summe Einzug","state=Zahlungsart","int93=TeilRad Gebühren","int98=TeilRad Gebühren 19%","int94=TeilRad Disagio","int99=TeilRad Disagio 19%","int02=Summe Gutschrift"); + } + } + my $tplf = $dbt->get_tpl($dbh,201);#Kunden-Faktura, ex Firma + my @tplf_order = split /,/,$tplf->{tpl_order}; - 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=>'c_id4trans', -override=>'1', -value=>"$rel4tpl->{content_id}"); - print $q->hidden(-name=>'tpl_id4trans', -override=>'1', -value=>"$node_meta->{tpl_id}"); + print $q->start_table({-class=>'list', -border=>'0', -width=>'100%',-align=>'left', -cellpadding=>'3', -cellspacing=>'0'}),"\n"; + + print $q->hidden(-name=>'offset', -override=>'1', -value=>"$R::offset"),"\n" if($R::offset); + print $q->hidden(-name=>'limit', -override=>'1', -value=>"$R::limit"),"\n" if($R::limit); + print $q->hidden(-name=>'c_id4trans', -override=>'1', -value=>"$ctt->{content_id}"),"\n"; + print $q->hidden(-name=>'tpl_id4trans', -override=>'1', -value=>"$ctt->{template_id}"),"\n"; $line_count2++; - print $q->Tr(); - print $q->th("Pos."),"\n"; + print $q->Tr(),"\n"; + #print $q->th("Pos."),"\n"; foreach (@tpl_order){ my ($key,$val) = split /=/,$_; - $k++ if($val); + $tc++ if($val); $val .= " ($key)" if($users_dms->{u_id} eq $varenv{superu_id}); - print $q->th("$val"); + print $q->th("$val"),"\n"; } print $q->start_form(-name=>'transposform'),"\n"; - my $scol = "c_id"; + my $sum_operatorcredit=0; + my $sum_payonecapture=0; my $sum_parts19=0; my $diff19 = 100 + 19; my $sum_umst19=0; @@ -114,36 +136,29 @@ sub tpl(){ my $accounting_start = ""; my $accounting_end = ""; - foreach my $id (sort { $cttpos->{$b}->{$scol} <=> $cttpos->{$a}->{$scol} } keys(%$cttpos)){ - - my $oac = $pri->operator_accounting2calc(\%varenv,$cttpos->{$id},$ctf,$tplf); - #$sum_parts19 += $oac->{int01};#payone Einzug - $sum_parts19 += $oac->{int02};#Auszahlung - #$oac->{int01} = $pri->round($oac->{int01}); - $oac->{int01} = sprintf('%.2f', $oac->{int01}); + foreach my $id (sort { $cttpos->{$b}->{c_id} <=> $cttpos->{$a}->{c_id} } keys(%$cttpos)){ + my $oac = $pri->operator_accounting2calc(\%varenv,$cttpos->{$id},$ctf_operator); + $sum_operatorcredit += $oac->{int02};#Abrechnung Gutschrift + $sum_parts19 += $oac->{int100};#Operator Rechnung (TeilRad Gebühren + Disagio incl. 19%) + $oac->{int01} = sprintf('%.2f', $oac->{int01}); if(1==1){ $i++; + $line_count2++; + #FIXME if($i==1){ $accounting_end = "$3.$2.$1" if($cttpos->{$id}->{pay_time} =~ /(\d+)\-(\d+)\-(\d+)/); $accounting_start = $accounting_end; }else{ $accounting_start = "$3.$2.$1" if($cttpos->{$id}->{pay_time} =~ /(\d+)\-(\d+)\-(\d+)/); } - #print "$accounting_start - $accounting_end
"; + #print "$cttpos->{$id}->{pay_time} xxxx $accounting_start - $accounting_end
"; - my @line_txt01 = split(/\n/,$cttpos->{$id}->{txt01}); - if($cttpos->{$id}->{int02} != 0){ - $line_count2++; - #$line_count2 += scalar(@line_txt01); - } - #1. Spalte print $q->Tr(),"\n"; - print $q->td({-class=>'tdint'},"$i"),"\n"; + #print $q->td({-class=>'tdint'},"$i"),"\n"; - #Tablecontent (parameter) foreach (@tpl_order){ my ($key,$val) = split /=/,$_; $cttpos->{$id}->{$key} = $q->unescapeHTML($cttpos->{$id}->{$key}); @@ -154,7 +169,11 @@ sub tpl(){ if(1==1){ if($key =~ /ct_name/){ - print $q->td({-class=>'tdtxt'},"\# $cttpos->{$id}->{ct_name} $cttpos->{$id}->{txt01}"),"\n"; + #print $q->td({-class=>'tdtxt'},"\# $cttpos->{$id}->{$key} $cttpos->{$id}->{txt01}"),"\n"; + print $q->td({-class=>'tdtxt'},"\# $cttpos->{$id}->{$key}"),"\n"; + } + elsif($key =~ /c_id/){ + print $q->td({-class=>'tdint'},"$cttpos->{$id}->{$key}"),"\n"; } elsif($key =~ /int/){ $oac->{$key} =~ s/\./,/; @@ -182,7 +201,6 @@ sub tpl(){ my $sum_paid = $sum_parts19; $sum_paid = $pri->round($sum_paid); - my $sum_preauth = $sum_paid || 0; $sum_paid = sprintf('%.2f', $sum_paid); $sum_paid =~ s/\./,/; @@ -190,6 +208,10 @@ sub tpl(){ $sum_umst19 = sprintf('%.2f', $sum_umst19); $sum_umst19 =~ s/\./,/; + $sum_operatorcredit = $pri->round($sum_operatorcredit); + $sum_operatorcredit = sprintf('%.2f', $sum_operatorcredit); + $sum_operatorcredit =~ s/\./,/; + my $payment_text = ""; foreach(@tplf_order){ my ($key,$des,$size) = split /=/,$_; @@ -207,48 +229,54 @@ sub tpl(){ } } - my $n="5"; - my $m= 1 + $k - $n; - $m++; + my $cs = $tc - 3; print "\n"; - print "
$payment_text
\n"; - print "\n"; - - print $q->start_table({-class=>'list',-style=>'border-top:1px;border-style:solid;border-color:black;', -border=>'0', -width=>'100%',-align=>'center', -cellpadding=>'3', -cellspacing=>'0'}),"\n"; + print "
$payment_text
\n"; + + ###print sum + print "\n"; + print $q->start_table({-class=>'list',-style=>'border-top:0px;border-style:solid;border-color:black;', -border=>'0', -width=>'100%',-align=>'center', -cellpadding=>'3', -cellspacing=>'0'}),"\n"; print $q->Tr("\n"); print $q->td(" "); - if(1==1){ + #Summe Betreiber Rechnung + if($ctt->{template_id} != 208){#not equal Abrechnung print $q->Tr("\n"); $line_count2++; - print $q->td({-class=>'tdint'},"Nettobetrag:"); + print $q->td({-class=>'tdint',-colspan=>2},"Nettobetrag"); print $q->td({-class=>'tdint',-nowrap=>"1"},"$sum_netto19 €"); 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"},"19% UmSt auf $sum_netto19 €:"); + print $q->td({-class=>'tdint',-colspan=>2,-nowrap=>"1"},"19% UmSt auf $sum_netto19 €"); print $q->td({-class=>'tdint',-nowrap=>"1"},"$sum_umst19 €"); } + + print $q->Tr("\n");$line_count2++; + print $q->td({-class=>'tdsum',-colspan=>2},"Summe $ctt->{state}"); + print $q->td({-class=>'tdint',-nowrap=>"1"},"$sum_paid €"); + } + #Summe Betreiber Abrechnung (Gutschrift) + else{ + print $q->Tr("\n");$line_count2++; + print $q->td({-class=>'tdsum',-colspan=>2},"Summe $ctt->{state}"); + print $q->td({-class=>'tdint',-nowrap=>"1"},"$sum_operatorcredit €"); } - my $summe = "Summe"; - print $q->Tr("\n");$line_count2++; - print $q->td({-class=>'tdsum'},"$summe:"); - print $q->td({-class=>'tdint',-nowrap=>"1"},"$sum_paid €"); - print $q->hidden(-name=>'sum_paid', -override=>'1',-value=>"$sum_paid"); print $q->end_table; print " "; + ###print sum end + print ""; print $q->end_table; print $q->hidden(-name=>'owner', -override=>'1', -value=>"$users_dms->{u_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=>'c_id4trans', -override=>'1', -value=>"$ctt->{content_id}"); + print $q->hidden(-name=>'tpl_id4trans', -override=>'1', -value=>"$ctt->{template_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=$rel4tpl->{main_id} if($rel4tpl->{main_id} && $rel4tpl->{main_id} > "300000"); + $set_main_id=$ctt->{main_id} if($ctt->{main_id} && $ctt->{main_id} > "300000"); print $q->hidden(-name=>'set_main_id', -value=>"$set_main_id", -override=>'1'); @@ -259,22 +287,46 @@ sub tpl(){ my $users_dms_primary = { u_id => 0 }; $users_dms_primary = $dbt->select_users($dbh_primary,$users_dms->{u_id},"and int03=2"); - if($users_dms_primary->{u_id} && $users_dms_primary->{int03} == 2 && !$ctt->{close_time}){ - my @_paymentstate = ("","Überweisung"); + if($users_dms_primary->{u_id} && $users_dms_primary->{int03} == 2){ + my @_paymentstate = (""); my $kind_of_payment = ""; - $kind_of_payment = "$ctt->{state}" if($ctt->{state} && $ctt->{int01}); + if($ctt->{template_id} != 208){#not equal Abrechnung + print $q->hidden(-name=>'sum_paid', -override=>'1',-value=>"$sum_paid"); + push @_paymentstate, "Disagio"; + if($ctt->{state} && $ctt->{int01}){ + $kind_of_payment = "$ctt->{state}"; + $ctt->{int01} =~ s/\./,/; + my $style = "color:red;" if($ctt->{int01} ne $sum_paid); + my $opos = ""; + $opos = "OPOS" if($ctt->{int14} && $ctt->{int14} > 0); + print $q->div({-style=>"padding:0.5em;font-size:0.81em;width:98%;text-align:right;"},"$opos Buchung $vibuchen_mtime \"$ctt->{state}\" $ctt->{int01} €"),"\n"; + } + } + else{ + print $q->hidden(-name=>'sum_operatorcredit', -override=>'1',-value=>"$sum_operatorcredit"); + push @_paymentstate, "Gutschrift"; + if($ctt->{state} && $ctt->{int02}){ + $kind_of_payment = "$ctt->{state}"; + $ctt->{int02} =~ s/\./,/; + my $style = "color:red;" if($ctt->{int02} ne $sum_operatorcredit); + my $opos = ""; + $opos = "OPOS" if($ctt->{int14} && $ctt->{int14} > 0); + print $q->div({-style=>"padding:0.5em;font-size:0.81em;width:98%;text-align:right;"},"$opos Buchung $vibuchen_mtime \"$ctt->{state}\" $ctt->{int02} €"),"\n"; + } + } - - my $send_invoice_checkbox = 1; - $send_invoice_checkbox = 0 if($ctt->{txt30}); - print $q->div({-class=>'element6',-style=>'float:right;'}, - "buchen incl. drucken ",$but->checkbox("print_pdf","ct_trans","1","PDF drucken",""), - " eMail Versand ",$but->checkbox("1","send_invoice","$send_invoice_checkbox","eMail Rechnung",""), - $but->singlesubmit1("set_state","buchen"), - $but->selector("state","250px",$kind_of_payment,@_paymentstate)),"\n"; + if(!$ctt->{close_time}){ + my $send_invoice_checkbox = 0; + #$send_invoice_checkbox = 0 if($ctt->{txt30}); + print $q->div({-class=>'element6',-style=>'float:right;'}, + "buchen incl. drucken ",$but->checkbox("print_pdf","ct_trans","1","PDF drucken",""), + " eMail Versand ",$but->checkbox("1","send_invoice","$send_invoice_checkbox","eMail $ctt->{txt00}",""), + $but->singlesubmit1("set_state","buchen"), + $but->selector("state","250px",$kind_of_payment,@_paymentstate)),"\n"; + } } - } + print $q->end_form; my $praefix = "$ctt->{txt00}-$varenv{praefix}"; @@ -286,23 +338,15 @@ sub tpl(){ 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->div({-style=>"padding:0.5em;font-size:0.81em;width:98%;text-align:right;"}, "eMail wurde nicht versandt! Rechnung eMail ", $but->singlesubmit1("ct_trans","send_invoice_again","send_invoice_again")),"\n" if($users_dms->{u_id} == $dbt->{copri_conf}->{superu_id}); + print $q->div({-style=>"padding:0.5em;font-size:0.81em;width:98%;text-align:right;"}, "eMail wurde nicht versandt! $ctt->{txt00} eMail ", $but->singlesubmit1("ct_trans","send_invoice_again","send_invoice_again")),"\n" if($users_dms->{u_id} == $dbt->{copri_conf}->{superu_id}); print $q->end_form; } - if($ctt->{state} && $ctt->{int01}){ - $ctt->{int01} =~ s/\./,/; - my $style = "color:red;" if($ctt->{int01} ne $sum_paid); - my $opos = ""; - $opos = "OPOS" if($ctt->{int14} && $ctt->{int14} > 0); - print $q->div({-style=>"padding:0.5em;font-size:0.81em;width:98%;text-align:right;"},"$opos $vibuchen_mtime Gebucht $ctt->{int01} € \"$ctt->{state}\"") if($ctt->{state}); - } - if( -f "$varenv{basedir}/pdfinvoice/$praefix-$ctt->{ct_name}.pdf"){ - print $q->div({-style=>'padding:0.5em;font-size:0.81em;width:98%;text-align:right;'}, "Download: ", $q->a({-href=>"$varenv{wwwhost}/FileOut?file=$praefix-$ctt->{ct_name}.pdf&sessionid=$coo", -target=>"_blank" , -type=>'application/octet-stream', -style=>'text-decoration:underline;'}), "Rechnung $ctt->{ct_name}.pdf"),"\n"; + print $q->div({-style=>'padding:0.5em;font-size:0.81em;width:98%;text-align:right;'}, "Download: ", $q->a({-href=>"$varenv{wwwhost}/FileOut?file=$praefix-$ctt->{ct_name}.pdf&sessionid=$coo", -target=>"_blank" , -type=>'application/octet-stream', -style=>'text-decoration:underline;'}), "$praefix-$ctt->{ct_name}.pdf"),"\n"; } - $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","$ctt->{content_id}","txt20","$accounting_start - $accounting_end","","","","","no_time") if(!$int05 && $accounting_start && $accounting_end); return "$line_count2"; } diff --git a/copri4/main/src/Tpl/TransPositionen.pm b/copri4/main/src/Tpl/TransPositionen.pm index 06291dc..ef941e6 100755 --- a/copri4/main/src/Tpl/TransPositionen.pm +++ b/copri4/main/src/Tpl/TransPositionen.pm @@ -36,7 +36,7 @@ sub tpl(){ my $node_meta = shift; my $users_dms = shift; my $set_main_id = shift; - my $rel4tpl = shift; + my $ctt = shift; my $return = shift || ""; my $q = new CGI; @@ -51,20 +51,28 @@ sub tpl(){ my %ib = $but->ibuttons(); my $today = strftime "%d.%m.%Y",localtime; my $now_dt = strftime "%Y-%m-%d %H:%M:%S", localtime; - my $dbh = ""; my $channel_map = $dbt->channel_map(); my $coo = $q->cookie(-name=>'domcookie'); + my $dbh = ""; my $mapref = {}; my $ct_users = $dbt->users_map($dbh,$mapref);#get serviceAPP and DMS users from contentadr my $line_count2 = 0; - my $k=0; + my $tc=0; + my $txt20 = $R::txt20 || $ctt->{txt20} || "";#Leistungsdatum + my $int05 = $R::int05 || $ctt->{int05} || "";#manuell + my $rows = 0; my $spart_ct_name = $R::spart_ct_name || ""; my $c_idpos = $R::c_idpos || $R::pos_id || ""; + my $cttpos = { c_id => 0 }; - my $ctf = $db->get_content1("contentuser",$dbt->{shareedms_conf}->{parent_id}); - my $ctt = $db->get_content1("contenttrans",$rel4tpl->{content_id}); - #my $umst1619 = $lb->umst_breaking($ctt,""); + my $ctf = { c_id => 0 }; + my $pref_cu = { + table => "contentuser", + fetch => "one", + c_id => $dbt->{shareedms_conf}->{parent_id}, + }; + $ctf = $dbt->fetch_tablerecord($dbh,$pref_cu); my $ctadr = $db->get_content1("contentadr",$ctt->{int10}); my $buchen_mtime = $lb->time4de($ctt->{mtime}); @@ -75,12 +83,7 @@ sub tpl(){ my $tplf = $db->get_tpl("201");#Kunden-Faktura, ex Firma my @tplf_order = split /,/,$tplf->{tpl_order}; - my $txt20 = $R::txt20 || $ctt->{txt20} || "";#Leistungsdatum - my $int05 = $R::int05 || $ctt->{int05} || "";#manuell - my $cttpos = { c_id => 0 }; - my $rows = 0; - - ($cttpos,$rows) = $dbt->collect_contentpos($dbh,"contenttrans",$rel4tpl->{content_id}); + ($cttpos,$rows) = $dbt->collect_contentpos($dbh,"contenttrans",$ctt->{content_id}); foreach my $id (keys(%$cttpos)){ if(ref($cttpos->{$id}) eq "HASH"){ @@ -92,7 +95,7 @@ sub tpl(){ # @tpl_order = ("txt01=Beschreibung","ct_name=Nummer","date_time=timerange","int26=Einsparung","int35=Mietzeit Menge","int03=Artikel Menge","int02=Preis","int07=Rabatt","int04=Gesamt"); #} }else{ - $lb->failure3("Der selekt einer Verkaufsposition ist fehlgeschlagen, errocode ($rel4tpl->{content_id} | $users_dms->{c_id4trans} | $node_meta->{tpl_id}). Bitte admin kontaktieren"); + $lb->failure3("Der selekt einer Verkaufsposition ist fehlgeschlagen, errocode ($ctt->{content_id} | $ctt->{template_id} | $users_dms->{c_id4trans}). Bitte admin kontaktieren"); exit; } } @@ -130,25 +133,24 @@ EOF print $q->start_form(-name=>'spartform'); $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'); + print $q->hidden(-name=>'trans2edit', -value=>"transpos", -override=>'1'),"\n"; + print $q->hidden(-name=>'offset', -override=>'1', -value=>"$R::offset"),"\n" if($R::offset); + print $q->hidden(-name=>'limit', -override=>'1', -value=>"$R::limit"),"\n" if($R::limit); + print $q->hidden(-name=>'c_id4trans', -override=>'1', -value=>"$ctt->{content_id}"),"\n"; + print $q->hidden(-name=>'tpl_id4trans', -override=>'1', -value=>"$ctt->{template_id}"),"\n"; + print $q->hidden(-id=>'c_id', -name=>"c_id", -override=>'1'),"\n"; + print $q->hidden(-id=>'spart_ct_name', -name=>"spart_ct_name", -override=>'1'),"\n"; $line_count2++; print $q->Tr(); - print $q->th($but->singlesubmit("select_part","*"),"\n"); + print $q->th($but->singlesubmit("select_part","*")),"\n"; foreach (@tpl_order){ my ($key,$val) = split /=/,$_; - $k++ if($val); + $tc++ 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'),""); + 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'),""),"\n"; }elsif($key =~ /int|txt|time\d+/){ - print $q->th("$val"); + print $q->th("$val"),"\n"; } } @@ -214,16 +216,16 @@ EOF #1. Spalte print $q->Tr(),"\n"; - print ""; + print "","\n"; 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=>"$rel4tpl->{content_id}"); - print $q->hidden(-name=>'tpl_id4trans', -override=>'1', -value=>"$node_meta->{tpl_id}"); + print $q->hidden(-name=>'c_idpos', -value=>"$cttpos->{$id}->{c_id}", -override=>'1'),"\n"; + print $q->hidden(-name=>'cc_id', -value=>"$cttpos->{$id}->{cc_id}", -override=>'1'),"\n"; + print $q->hidden(-name=>'c_id4trans', -override=>'1', -value=>"$ctt->{content_id}"),"\n"; + print $q->hidden(-name=>'tpl_id4trans', -override=>'1', -value=>"$ctt->{template_id}"),"\n"; print $but->singlesubmit2("ct_trans","save_pos","$ib{save_pos}","background-color:white;padding:20px;","")," ", $but->singlesubmit2("ct_trans","delete_pos","$ib{delete_pos}","background-color:white;padding:20px;",""),"\n"; }elsif(!$ctt->{close_time}){ - 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"; + print $q->a({-class=>"editnav",-href=>"/DMS/Faktura?trans2edit=transpos\&c_idpos=$cttpos->{$id}->{c_id}\&c_id4trans=$ctt->{content_id}\&tpl_id4trans=$ctt->{template_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"; @@ -252,13 +254,13 @@ EOF if($cttpos->{$id}->{int26}){ $co2saving = "Einsparung
"; my $co2diff = $pri->co2calc($cttpos->{$id}); - my $sprit_price = $pri->sprit2calc($cttpos->{$id}); + #my $sprit_price = $pri->sprit2calc($cttpos->{$id}); $co2saving .= "$co2diff kg CO²
"; - $co2saving .= "$sprit_price EUR
" if($sprit_price !~ /-/); + #$co2saving .= "$sprit_price EUR
" if($sprit_price !~ /-/); $cttpos->{$id}->{int26} =~ s/\./,/; $co2saving .= "bei $cttpos->{$id}->{int26} KM"; } - print $q->td({-class=>'tdint'},"$co2saving"); + print $q->td({-class=>'tdint'},"$co2saving"),"\n"; }elsif($key =~ /int03/){ if($cttpos->{$id}->{int35} && $cttpos->{$id}->{start_time} && $cttpos->{$id}->{end_time}){ @@ -276,12 +278,12 @@ EOF } print "\n"; }else{ - 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"); + 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/){ - print $q->td({-class=>'tdint',-nowrap=>"1"},"$gesamt €"); + print $q->td({-class=>'tdint',-nowrap=>"1"},"$gesamt €"),"\n"; }elsif($key =~ /txt01/){ if($cttpos->{$id}->{int09} && $cttpos->{$id}->{$key} !~ /Manuell/){ $cttpos->{$id}->{$key} .= "\nManuell bearbeitet\n"; @@ -290,7 +292,7 @@ EOF 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 "\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, -autofocus=>1),"
\n"; #if Traiff Nr. @@ -314,9 +316,9 @@ EOF print "\n"; }elsif($key =~ /txt/){ - 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"); + 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 =~ /int/){ - print $q->td({-class=>'tdint',-nowrap=>"1"}," \n"); + print $q->td({-class=>'tdint',-nowrap=>"1"}," "),"\n"; } } #end edit position @@ -337,13 +339,13 @@ EOF if($cttpos->{$id}->{int26}){ $co2saving = "Einsparung
"; my $co2diff = $pri->co2calc($cttpos->{$id}); - my $sprit_price = $pri->sprit2calc($cttpos->{$id}); + #my $sprit_price = $pri->sprit2calc($cttpos->{$id}); $co2saving .= "$co2diff kg CO²
"; - $co2saving .= "$sprit_price EUR
"; + #$co2saving .= "$sprit_price EUR
"; $cttpos->{$id}->{int26} =~ s/\./,/; $co2saving .= "bei $cttpos->{$id}->{int26} KM"; } - print $q->td({-class=>'tdint'},"$co2saving"); + print $q->td({-class=>'tdint'},"$co2saving"),"\n"; } #yes, int03=Menge on parts, int35=unit_price1 on rental @@ -431,9 +433,9 @@ EOF } print "\n"; }elsif($key =~ /txt/){ - print $q->td({-class=>'tdtxt'},"$cttpos->{$id}->{$key}"); + print $q->td({-class=>'tdtxt'},"$cttpos->{$id}->{$key}"),"\n"; }elsif($key =~ /int/){ - print $q->td({-class=>'tdint',-nowrap=>"1"}," \n"); + print $q->td({-class=>'tdint',-nowrap=>"1"}," "),"\n"; } }#end view position @@ -476,13 +478,11 @@ EOF } } - my $n="5"; - my $m= 1 + $k - $n; - $m++; + my $cs = $tc - 3; print "\n"; - print "
$payment_text
\n"; - print "\n"; - + print "
$payment_text
\n"; + + print "\n"; print $q->start_table({-class=>'list',-style=>'border-top:1px;border-style:solid;border-color:black;', -border=>'0', -width=>'100%',-align=>'center', -cellpadding=>'3', -cellspacing=>'0'}),"\n"; print $q->Tr("\n"); print $q->td(" "); @@ -510,16 +510,15 @@ EOF print ""; print $q->end_table; - 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=>"$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); + print $q->hidden(-name=>'owner', -override=>'1', -value=>"$users_dms->{u_id}"),"\n"; + print $q->hidden(-name=>'offset', -override=>'1', -value=>"$R::offset"),"\n" if($R::offset); + print $q->hidden(-name=>'c_id4trans', -override=>'1', -value=>"$ctt->{content_id}"),"\n"; + print $q->hidden(-name=>'tpl_id4trans', -override=>'1', -value=>"$ctt->{template_id}"),"\n"; + print $q->hidden(-name=>'offset', -override=>'1', -value=>"$R::offset"),"\n" if($R::offset); + print $q->hidden(-name=>'limit', -override=>'1', -value=>"$R::limit"),"\n" if($R::limit); - $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'); + $set_main_id=$ctt->{main_id} if($ctt->{main_id} && $ctt->{main_id} > "300000"); + print $q->hidden(-name=>'set_main_id', -value=>"$set_main_id", -override=>'1'),"\n"; if($users_dms->{int03} == 2){ @@ -529,7 +528,7 @@ EOF my $users_dms_primary = { u_id => 0 }; $users_dms_primary = $dbt->select_users($dbh_primary,$users_dms->{u_id},"and int03=2"); - if($users_dms_primary->{u_id} && $users_dms_primary->{int03} == 2 && !$ctt->{close_time}){ + if($users_dms_primary->{u_id} && $users_dms_primary->{int03} == 2){ my @_paymentstate = split(/\|/,$dbt->{shareedms_conf}->{payment_state}); push @_paymentstate, ""; my $kind_of_payment = ""; @@ -545,14 +544,23 @@ EOF } $kind_of_payment = "$ctt->{state}" if($ctt->{state} && $ctt->{int01}); + if($ctt->{state} && $ctt->{int01}){ + $ctt->{int01} =~ s/\./,/; + my $style = "color:red;" if($ctt->{int01} ne $sum_paid); + my $opos = ""; + $opos = "OPOS" if($ctt->{int14} && $ctt->{int14} > 0); + print $q->div({-style=>"padding:0.5em;font-size:0.81em;width:98%;text-align:right;"},"$opos Buchung $vibuchen_mtime \"$ctt->{state}\" $ctt->{int01} €"),"\n"; + } - my $send_invoice_checkbox = 1; - $send_invoice_checkbox = 0 if($ctt->{txt30}); - print $q->div({-class=>'element6',-style=>'float:right;'}, - "buchen incl. drucken ",$but->checkbox("print_pdf","ct_trans","1","PDF drucken",""), - " eMail Versand ",$but->checkbox("1","send_invoice","$send_invoice_checkbox","eMail Rechnung",""), - $but->singlesubmit1("set_state","buchen"), - $but->selector("state","250px",$kind_of_payment,@_paymentstate)),"\n"; + if(!$ctt->{close_time}){ + my $send_invoice_checkbox = 1; + $send_invoice_checkbox = 0 if($ctt->{txt30}); + print $q->div({-class=>'element6',-style=>'float:right;'}, + "buchen incl. drucken ",$but->checkbox("print_pdf","ct_trans","1","PDF drucken",""), + " eMail Versand ",$but->checkbox("1","send_invoice","$send_invoice_checkbox","eMail $ctt->{txt00}",""), + $but->singlesubmit1("set_state","buchen"), + $but->selector("state","250px",$kind_of_payment,@_paymentstate)),"\n"; + } } #further payone capture are only allowed if OPOS && sequence && TXID is set if($ctt->{int14} && $ctt->{int18} && $ctt->{txt16}){ @@ -572,23 +580,14 @@ EOF print $q->div({-style=>"padding:0.5em;font-size:0.81em;width:98%;text-align:right;"}, "$ctt->{txt30}"),"\n"; }elsif( -f "$varenv{pdf}/$praefix-$ctt->{ct_name}.pdf" ){ print $q->start_form(),"\n"; - 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->div({-style=>"padding:0.5em;font-size:0.81em;width:98%;text-align:right;"}, "eMail wurde nicht versandt! Rechnung eMail ", $but->singlesubmit1("ct_trans","send_invoice_again","send_invoice_again")),"\n" if($users_dms->{u_id} == $dbt->{copri_conf}->{superu_id}); + print $q->hidden(-name=>'offset', -override=>'1', -value=>"$R::offset"),"\n" if($R::offset); + print $q->hidden(-name=>'limit', -override=>'1', -value=>"$R::limit"),"\n" if($R::limit); + print $q->div({-style=>"padding:0.5em;font-size:0.81em;width:98%;text-align:right;"}, "eMail wurde nicht versandt! $ctt->{txt00} eMail ", $but->singlesubmit1("ct_trans","send_invoice_again","send_invoice_again")),"\n" if($users_dms->{u_id} == $dbt->{copri_conf}->{superu_id}); print $q->end_form; } - if($ctt->{state} && $ctt->{int01}){ - $ctt->{int01} =~ s/\./,/; - my $style = "color:red;" if($ctt->{int01} ne $sum_paid); - my $opos = ""; - $opos = "OPOS" if($ctt->{int14} && $ctt->{int14} > 0); - print $q->div({-style=>"padding:0.5em;font-size:0.81em;width:98%;text-align:right;"},"$opos $vibuchen_mtime Gebucht $ctt->{int01} € \"$ctt->{state}\"") if($ctt->{state}); - } if( -f "$varenv{basedir}/pdfinvoice/$praefix-$ctt->{ct_name}.pdf"){ - #print $q->div({-style=>"padding:0.5em;font-size:0.81em;width:98%;text-align:right;"}, "Download: ", $q->a({-href=>"$varenv{metahost}/pdf/$praefix-$ctt->{ct_name}.pdf", -target=>'_blank'},"$praefix-$ctt->{ct_name}.pdf")); - print $q->div({-style=>'padding:0.5em;font-size:0.81em;width:98%;text-align:right;'}, "Download: ", $q->a({-href=>"$varenv{wwwhost}/FileOut?file=$praefix-$ctt->{ct_name}.pdf&sessionid=$coo", -target=>"_blank" , -type=>'application/octet-stream', -style=>'text-decoration:underline;'}), "Rechnung $ctt->{ct_name}.pdf"),"\n"; + print $q->div({-style=>'padding:0.5em;font-size:0.81em;width:98%;text-align:right;'}, "Download: ", $q->a({-href=>"$varenv{wwwhost}/FileOut?file=$praefix-$ctt->{ct_name}.pdf&sessionid=$coo", -target=>"_blank" , -type=>'application/octet-stream', -style=>'text-decoration:underline;'}), "$praefix-$ctt->{ct_name}.pdf"),"\n"; } @@ -598,8 +597,9 @@ 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","$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); + $db->updater("contenttrans","c_id","$ctt->{content_id}","txt20","$accounting_start - $accounting_end","","","","","no_time") if(!$int05 && $accounting_start && $accounting_end); + $db->updater("contenttrans","c_id","$ctt->{content_id}","int15","$sum_preauth","","","","","no_time") if($sum_preauth || $sum_preauth == 0); + return "$line_count2"; } 1; diff --git a/copri4/main/src/scripts/Ilockit_cloud.pl b/copri4/main/src/scripts/Ilockit_cloud.pl index e629b53..c4ca6de 100755 --- a/copri4/main/src/scripts/Ilockit_cloud.pl +++ b/copri4/main/src/scripts/Ilockit_cloud.pl @@ -97,8 +97,8 @@ sub utctime { #'deviceTime' => '2021-10-14T08:19:35.000+0000', #'serverTime' => '2021-10-14T07:19:37.000+0000', - $utc_epoch -= 2*60*60;# -2 std (Sommerzeit) - #$utc_epoch -= 1*60*60;# -1 std (Winterzeit) + #$utc_epoch -= 2*60*60;# -2 std (Sommerzeit) + $utc_epoch -= 1*60*60;# -1 std (Winterzeit) $utc_epoch += $latency; $time = gmtime($utc_epoch);#epoch diff --git a/copri4/main/src/scripts/Ilockit_trackingcloud.pl b/copri4/main/src/scripts/Ilockit_trackingcloud.pl index 35bf625..da4afef 100755 --- a/copri4/main/src/scripts/Ilockit_trackingcloud.pl +++ b/copri4/main/src/scripts/Ilockit_trackingcloud.pl @@ -93,8 +93,8 @@ sub utctime { my $time = Time::Piece->strptime($date, "%Y-%m-%dT%H:%M:%S"); print FILE "localtime: " . $time->datetime . "\n";#localtime my $utc_epoch = $time->epoch; - $utc_epoch -= 2*60*60;# -2 std (Sommerzeit) - #$utc_epoch -= 1*60*60;# -1 std (Winterzeit) + #$utc_epoch -= 2*60*60;# -2 std (Sommerzeit) + $utc_epoch -= 1*60*60;# -1 std (Winterzeit) $utc_epoch += $latency; $time = gmtime($utc_epoch);#epoch print FILE "utctime: " . $time->datetime . "\n";#utc zulu date time diff --git a/copri4/shareeapp-operator/src/Tpl/FormEdit.pm b/copri4/shareeapp-operator/src/Tpl/FormEdit.pm index b9ea090..5665cee 100755 --- a/copri4/shareeapp-operator/src/Tpl/FormEdit.pm +++ b/copri4/shareeapp-operator/src/Tpl/FormEdit.pm @@ -424,9 +424,9 @@ Nach Abschluss der Registrierung erhalten Sie sowohl auf die von Ihnen hinterleg if($cttpos->{$id}->{int26}){ $co2saving = "Einsparung
"; my $co2diff = $pri->co2calc($cttpos->{$id}); - my $sprit_price = $pri->sprit2calc($cttpos->{$id}); + #my $sprit_price = $pri->sprit2calc($cttpos->{$id}); $co2saving .= "$co2diff kg CO²
"; - $co2saving .= "$sprit_price EUR
" if($sprit_price !~ /-/); + #$co2saving .= "$sprit_price EUR
" if($sprit_price !~ /-/); $cttpos->{$id}->{int26} =~ s/\./,/; $co2saving .= "bei $cttpos->{$id}->{int26} KM"; }