mirror of
https://gitlab.com/t6353/sharee.bike.git
synced 2025-05-13 15:16:38 +02:00
Initial commit
This commit is contained in:
parent
b686656e88
commit
5e91fe947d
177 changed files with 41037 additions and 0 deletions
159
copri4/main/src/Tpl/APIdialog.pm
Normal file
159
copri4/main/src/Tpl/APIdialog.pm
Normal file
|
@ -0,0 +1,159 @@
|
|||
package APIdialog;
|
||||
#
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
# Copyright (c) Rainer Gümpelein, TeilRad GmbH
|
||||
#
|
||||
use strict;
|
||||
use warnings;
|
||||
use POSIX;
|
||||
use CGI::Carp qw(fatalsToBrowser);
|
||||
use CGI ':standard';
|
||||
use JSON;
|
||||
#use Test::JSON;
|
||||
use Scalar::Util qw(looks_like_number);
|
||||
use Lib::Config;
|
||||
use Mod::Buttons;
|
||||
use Mod::Libenz;
|
||||
use Mod::DBtank;
|
||||
use Mod::APIfunc;
|
||||
use Data::Dumper;
|
||||
|
||||
sub new {
|
||||
my $class = shift;
|
||||
my $self = {};
|
||||
bless($self,$class);
|
||||
return $self;
|
||||
}
|
||||
|
||||
|
||||
#Template
|
||||
sub tpl(){
|
||||
my $node_meta = shift;
|
||||
my $users_dms = shift;
|
||||
my $u_group = shift;
|
||||
my $return = shift;
|
||||
|
||||
my $q = new CGI;
|
||||
my $json = JSON->new->allow_nonref;
|
||||
my $cf = new Config;
|
||||
my $lb = new Libenz;
|
||||
my $dbt = new DBtank;
|
||||
my $apif = new APIfunc;
|
||||
my $but = new Buttons;
|
||||
my $dbh = "";#$dbt->dbconnect();
|
||||
|
||||
my %varenv = $cf->envonline();
|
||||
my %ib = $but->ibuttons();
|
||||
my $tpl = $dbt->get_tpl($dbh,$node_meta->{template_id});
|
||||
my $tpl_order = $tpl->{tpl_order};
|
||||
#$tpl_order =~ s/barcode=Rad/barcode=Rad,txt09=Wartungsarbeiten=area/;
|
||||
#$tpl_order =~ s/int04=Station/int04=Station,txt09=Wartungsarbeiten=area/ if($tpl->{tpl_id} == 403);
|
||||
$tpl_order = "barcode=Rad,txt09=Wartungsprotokoll=area";
|
||||
$tpl_order = "int04=Station,txt09=Wartungsprotokoll=area" if($tpl->{tpl_id} == 403);
|
||||
|
||||
my @tpl_order = split /,/,$tpl_order;
|
||||
|
||||
my $edit="rel_edit";
|
||||
my $save_key = "service_done";
|
||||
my $ctrel = {};
|
||||
if(ref($return) ne "SCALAR" && $return =~ /shareejson/){
|
||||
my $tj = $json->pretty->decode($return);
|
||||
foreach my $obj (keys (%{$tj->{shareejson}})){
|
||||
if($obj eq "service_id_done" && looks_like_number($tj->{shareejson}->{$obj})){
|
||||
my $c_id = $tj->{shareejson}->{$obj};
|
||||
my $fetch = {
|
||||
table => "contentpos",
|
||||
fetch => "one",
|
||||
c_id => "$c_id",
|
||||
};
|
||||
$ctrel = $dbt->fetch_tablerecord($dbh,$fetch);
|
||||
|
||||
}
|
||||
}
|
||||
}else{
|
||||
print $q->div($return),"\n";
|
||||
return;
|
||||
}
|
||||
|
||||
my $u_name;
|
||||
my $channel_map = $dbt->channel_map();
|
||||
my $mapref = {};
|
||||
my $ct_users = $dbt->users_map($dbh,$mapref);#get serviceAPP and DMS users from contentadr
|
||||
|
||||
foreach my $id (sort { $channel_map->{$a} cmp $channel_map->{$b} } keys (%$channel_map)){
|
||||
if($id == $ctrel->{owner}){
|
||||
$u_name = $channel_map->{$id};
|
||||
}
|
||||
}
|
||||
if(!$u_name){
|
||||
foreach my $ctu_id (keys (%$ct_users)){
|
||||
if($ct_users->{$ctu_id}->{c_id} == $ctrel->{owner}){
|
||||
$u_name = $ct_users->{$ctu_id}->{txt01};
|
||||
}
|
||||
}
|
||||
}
|
||||
$ctrel->{mtime} = $lb->time4de($ctrel->{mtime},"1") if($ctrel->{mtime});
|
||||
|
||||
print $q->hidden(-name=>'mode', -value=>"manager",-override=>1),"\n";
|
||||
print $q->hidden(-name=>'detail_search', -value=>"1",-override=>1),"\n";
|
||||
print $q->hidden(-name=>'owner', -value=>"$users_dms->{u_id}",-override=>1),"\n";
|
||||
print $q->hidden(-name=>'s_barcode', -value=>"$ctrel->{barcode}",-override=>1),"\n" if($ctrel->{barcode});
|
||||
print $q->hidden(-name=>'s_int04', -value=>"$ctrel->{int04}",-override=>1),"\n" if($ctrel->{int04});
|
||||
print $q->hidden(-name=>'service_id', -value=>"$ctrel->{c_id}",-override=>1),"\n";
|
||||
print $q->hidden(-name=>'main_id', -value=>"$node_meta->{main_id}",-override=>1),"\n";
|
||||
print $q->hidden(-name=>'template_id', -value=>"$node_meta->{template_id}",-override=>1),"\n";
|
||||
|
||||
|
||||
print "<div id='Container_cms'>";
|
||||
|
||||
#1. table submit
|
||||
print $q->start_table({-class=>'list', -border=>'0', -width=>'100%',-align=>'center', -cellpadding=>'3', -cellspacing=>'0'});
|
||||
print $q->Tr();
|
||||
print "<td colspan=2 style='height:25px;background-color:$varenv{contentpos_color};padding:2px;border-bottom: 1px solid silver;'>";
|
||||
print $but->singlesubmit7("$edit","$save_key","$ib{$save_key}","margin:0 5px;");
|
||||
print $q->span({-style=>'margin-left:200px; font-size:1em;'}, "$u_name / $ctrel->{mtime} ID $ctrel->{c_id}");
|
||||
print "</td>\n";
|
||||
print $q->end_table;
|
||||
|
||||
print $q->start_table({-border=>'0', -width=>'100%',-align=>'center', -cellpadding=>'3', -cellspacing=>'0'});
|
||||
my $required="";
|
||||
my $autofocus="";
|
||||
foreach (@tpl_order){
|
||||
my ($key,$des,$size) = split /=/,$_;
|
||||
#$des .= " ($key)" if($users_dms->{u_id} eq $varenv{superu_id});
|
||||
my $label_des = $des;
|
||||
$ctrel->{$key} = $q->unescapeHTML("$ctrel->{$key}");
|
||||
$ctrel->{$key} = $lb->newline($ctrel->{$key},"","1");
|
||||
|
||||
if($key =~ /barcode|int04/){
|
||||
print $q->Tr();
|
||||
print $q->td({-class=>'left_italic_cms'},"$des"),"\n";
|
||||
if(!$ctrel->{$key}){
|
||||
print $q->td({-class=>'content1_cms'},$q->textfield(-class=>'etxt', -style=>"",-name=>"s_$key", -default=>"$ctrel->{$key}", -autofocus=>1, -required=>1)),"\n";
|
||||
}else{
|
||||
print $q->td({-class=>'content1_cms'},"$ctrel->{$key}"),"\n";
|
||||
}
|
||||
}elsif($key =~ /int/ && $size eq "checkbox"){
|
||||
my $ck_style = $but->checkbox_style($key,"cbox");
|
||||
print "$ck_style";
|
||||
my $checked = "";
|
||||
$checked = "checked" if($ctrel->{$key});
|
||||
print $q->Tr();
|
||||
print $q->td({-class=>'left_italic_cms'},"<label for='sq_cbox$key'>$des</label>"),"\n";
|
||||
print $q->td({-class=>'content1_cms'},$q->div("<input type='checkbox' id='sq_cbox$key' name='$key' value='1' $checked>")),"\n";
|
||||
|
||||
}elsif($key =~ /txt/){
|
||||
my $h= 20;# if($size =~ /area(\d+)/);
|
||||
print $q->Tr();
|
||||
print $q->td({-class=>'left_italic_cms',-style=>'vertical-align: top;', -colspan=>1},"$des"),"\n";
|
||||
print $q->td({-class=>'content1_cms'},$q->textarea(-class=>"autos", -style=>'border: 1px solid silver;',-rows=>"$h",-cols=>'60;', -name=>"$key", -override=>'1',-default=>"$ctrel->{$key}")),"\n";
|
||||
}
|
||||
}
|
||||
print $q->end_table,"\n";
|
||||
print $q->div($but->singlesubmit7("$edit","$save_key","$ib{$save_key}","margin:10px 20px;")),"\n";
|
||||
|
||||
print "</div>";
|
||||
|
||||
}
|
||||
1;
|
485
copri4/main/src/Tpl/Address3.pm
Normal file
485
copri4/main/src/Tpl/Address3.pm
Normal file
|
@ -0,0 +1,485 @@
|
|||
package Address3;
|
||||
#
|
||||
##
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
# Copyright (c) Rainer Gümpelein, TeilRad GmbH
|
||||
#
|
||||
use strict;
|
||||
use warnings;
|
||||
use CGI;
|
||||
use CGI::Carp qw(fatalsToBrowser);
|
||||
use CGI ':standard';
|
||||
use Lib::Config;
|
||||
use Mod::Buttons;
|
||||
use Mod::Libenz;
|
||||
use Mod::Libenzdb;
|
||||
use Mod::DBtank;
|
||||
use Tpl::TransPositionen;
|
||||
|
||||
sub new {
|
||||
my $class = shift;
|
||||
my $self = {};
|
||||
bless($self,$class);
|
||||
return $self;
|
||||
}
|
||||
|
||||
#Template
|
||||
sub tpl(){
|
||||
my ($node_meta,$users_dms,$return) = @_;
|
||||
my $q = new CGI;
|
||||
my $cf = new Config;
|
||||
my $lb = new Libenz;
|
||||
my $db = new Libenzdb;
|
||||
my $dbt = new DBtank;
|
||||
my $but = new Buttons;
|
||||
my $transp = new TransPositionen;
|
||||
my %varenv = $cf->envonline();
|
||||
my $script = $q->script_name();
|
||||
my $path_info = $q->path_info();
|
||||
my $path = $path_info;
|
||||
#with meta_host,
|
||||
if("$varenv{metahost}"){
|
||||
$path = "$script" . "$path_info";
|
||||
$script="";
|
||||
}
|
||||
my $u_id = $users_dms->{u_id};
|
||||
my $lang = "de";
|
||||
|
||||
my $users = $db->select_users($u_id);
|
||||
my $user_agent = $q->user_agent();
|
||||
my %ib = $but->ibuttons();
|
||||
my $line_count1;
|
||||
|
||||
#get Firma
|
||||
my $ctf = $db->get_content1("contentuser",$dbt->{shareedms_conf}->{parent_id});
|
||||
|
||||
my $rel4tpl = $db->get_rel4tpl("",$lang,$users_dms->{c_id4trans},$users_dms->{tpl_id4trans});
|
||||
my @tpl_order = split /,/,$rel4tpl->{tpl_order};
|
||||
my $node = $db->get_node4multi($rel4tpl->{main_id},$lang) if($rel4tpl->{main_id});
|
||||
if(!$node->{main_id} && $users->{owner}){
|
||||
$db->update_users4trans("0","0",$users_dms->{kind_of_trans},$users_dms->{u_id});
|
||||
$users = $db->select_users($u_id);
|
||||
}
|
||||
#edit marker for "question save" dialog
|
||||
if($u_id && $R::trans2edit && $R::c_id4trans){
|
||||
$db->users_up("c_id4edit","$R::c_id4trans","$users->{owner}");
|
||||
}
|
||||
my $ctx = $db->get_content1("contenttrans",$users_dms->{c_id4trans});
|
||||
my $c_idadr = $ctx->{int10};#c_id orig from contentadr
|
||||
my $ctadr = $db->get_content1("contentadr",$c_idadr);
|
||||
my $rel_adr = $db->get_rel4tpl("","$lang","$c_idadr","202");
|
||||
|
||||
#print "\nc_idadr Got it from contenttrans.int10: $c_idadr\n";
|
||||
#
|
||||
#my $c_kdnr = $ctx->{txt14};
|
||||
#my $mandat;
|
||||
#$mandat = " | Mandat $ctx->{txt26}" if($ctx->{txt26});
|
||||
|
||||
my $ctt = $ctx;
|
||||
if(("$R::trans2edit" eq "client" && $R::c_idadr) || ($R::ct_trans eq "add_transadr")){
|
||||
$ctt = $db->get_content1("contentadr",$R::c_idadr);
|
||||
$c_idadr = $ctt->{c_id};
|
||||
#print "c_idadr Got it from contentadr.c_id: $c_idadr\n";
|
||||
#$mandat = " | Mandat $ctt->{ct_name}" if($ctt->{ct_name});
|
||||
#$c_kdnr = $ctt->{ct_name};
|
||||
}
|
||||
|
||||
print<<EOF
|
||||
<style>
|
||||
.ui-autocomplete {
|
||||
text-align:left;
|
||||
background:#eeeeee;
|
||||
border:1px solid silver;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script>
|
||||
\$(function() {
|
||||
\$('#json_selectadr').autocomplete({
|
||||
source: '/ajax_json?main_id=$dbt->{shareedms_conf}->{parent_id}&table=contentadr',
|
||||
minLength: 2,
|
||||
select: function(event, ui) {
|
||||
\$('#vorname_name').val(ui.item.vorname_name);
|
||||
\$('#c_idadr').val(ui.item.c_id);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
});
|
||||
</script>
|
||||
EOF
|
||||
;
|
||||
|
||||
my $main_id = $rel4tpl->{main_id} || $ctx->{int12};
|
||||
my $set_main_id = $ctf->{txt22};
|
||||
|
||||
my @formular_relations=("$set_main_id:Typ auswählen ...");
|
||||
my @workflow_relations=("$set_main_id:Typ auswählen ...");
|
||||
my $nodes = $db->collect_node($dbt->{shareedms_conf}->{faktura}, "$lang");
|
||||
my $depends = "irgendeinzeichen";
|
||||
#$depends = "Storno" if(!$ctx->{close_time});
|
||||
foreach my $id (sort { $nodes->{$a}->{node_name} cmp $nodes->{$b}->{node_name} } keys (%$nodes)){
|
||||
push (@formular_relations, "$id:$nodes->{$id}->{node_path}") if(($main_id eq $id) || ($nodes->{$id}->{node_path} !~ /journal|bericht|offen|Storno|Vorauszahlungsrechnung|letzte|langzeit|OPOS|$depends/));
|
||||
push (@workflow_relations, "$id:$nodes->{$id}->{node_path}") if($nodes->{$id}->{node_path} !~ /journal|bericht|offen|Schlussrechnung|letzte|langzeit|OPOS|$node->{node_name}$|$ctx->{txt00}|$depends/);
|
||||
}
|
||||
|
||||
print "\n<div style='position:absolute;text-align:left;background-color:white;width:100%;'>\n";
|
||||
if(!$users_dms->{c_id4trans} || !$users_dms->{tpl_id4trans}){
|
||||
$lb->failure3("Das Formular wurde gelöscht bzw. ist nicht vorhanden");
|
||||
}
|
||||
|
||||
#######Verkauf Header
|
||||
print $q->start_form(),"\n";
|
||||
print "\n<div style='background-color:#a7a18f;padding:0.2em 0.5em;text-align:left;width:100%;' nowrap=1>\n";
|
||||
#submit Header
|
||||
|
||||
my $invoice_time = "";
|
||||
if($ctt->{invoice_time}){#since 2020-03-16 will be set on Printpreview
|
||||
$invoice_time = $lb->time4de($ctt->{invoice_time},1);
|
||||
}else{
|
||||
$invoice_time = $lb->time4de($ctt->{mtime},1);
|
||||
}
|
||||
|
||||
my $channel_map = $dbt->channel_map();
|
||||
my $buchen_users = { txt01 => "" };
|
||||
if($channel_map->{$ctt->{owner}}){
|
||||
$buchen_users = { txt01 => "$channel_map->{$ctt->{owner}}" };
|
||||
}else{
|
||||
$buchen_users = $db->get_content1("contentadr",$ctt->{owner});
|
||||
}
|
||||
|
||||
$set_main_id=$main_id if($rel4tpl->{main_id} > "300000");
|
||||
if(!$ctx->{close_time} && ($ctx->{txt00} !~ /Storno/)){
|
||||
my $ebutton = "ebutton";
|
||||
$ebutton = "ebutton4" if($ctx->{ct_name} !~ /\d+/ && $R::trans2edit ne "client");
|
||||
print $but->singlesubmit1("set_relation","set_relation","$ebutton","","Generiert RechnungNr. incl. payone Vorautorisierung (txid)");
|
||||
print $but->selector("set_main_id","11em",$set_main_id,@formular_relations);
|
||||
}else{
|
||||
print $q->hidden(-name=>'set_main_id', -override=>'1', -value=>"$set_main_id");
|
||||
print $q->span({-style=>'padding:0.05em 3em;background-color:white;border:solid thin gray;'}, "$ctx->{txt00}");
|
||||
}
|
||||
|
||||
print $q->b("\# $ctx->{ct_name}");
|
||||
print $q->span({-style=>'margin:0 0.2em;'}," | ");
|
||||
if($ctx->{ct_name} =~ /\d+/){
|
||||
print $but->singlesubmit1("set_workflow","set_workflow");
|
||||
print $but->selector("set_main_id4workflow","11em","",@workflow_relations);
|
||||
print $q->span({-style=>'margin:0 0.2em;'}," | ");
|
||||
}
|
||||
print $but->singlesubmit1("ct_trans","print_pdf");
|
||||
print $q->hidden(-name=>'printer_id', -override=>'1', -value=>"PDF");
|
||||
|
||||
if(!$ctt->{int01} || $ctt->{ct_name} =~ /-/){
|
||||
print $q->span({-style=>'margin:0 0.2em;position:absolute;right:3px;'}," $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}");
|
||||
}else{
|
||||
print $q->span({-style=>'margin:0 0.2em;position:absolute;right:3px;'}," $buchen_users->{txt01} / $invoice_time "),"\n";
|
||||
}
|
||||
print "</div>\n";
|
||||
|
||||
print $q->hidden(-name=>'owner', -override=>'1', -value=>"$users->{owner}");
|
||||
print $q->hidden(-name=>'c_idadr', -override=>'1', -value=>"$c_idadr");
|
||||
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=>'p_template', -override=>'1', -value=>"$node->{node_path}");
|
||||
print $q->hidden(-name=>'c_id4trans', -override=>'1', -value=>"$ctx->{c_id}");
|
||||
print $q->hidden(-name=>'c_id4copy', -override=>'1', -value=>"$ctx->{c_id}");
|
||||
print $q->hidden(-name=>'close_time', -override=>'1', -value=>"$ctx->{close_time}");
|
||||
|
||||
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($u_id eq $varenv{superu_id});
|
||||
##########
|
||||
|
||||
|
||||
#Form for AdressData
|
||||
print $q->start_form(-name=>'addressform'),"\n";
|
||||
#Big table
|
||||
print $q->start_table({-class=>'list', -border=>'0', -width=>'100%',-align=>'left', -cellpadding=>'3', -cellspacing=>'0'}),"\n";
|
||||
|
||||
|
||||
print "<tr><td width='50%' style='font-size:1em;'>\n";
|
||||
print $q->start_table({-class=>'list', -height=>'10em',-border=>'0', -width=>'100%',-align=>'left', -cellpadding=>'0', -cellspacing=>'0'}),"\n";
|
||||
###Content #Edit Address --> template=Adressenliste
|
||||
$ctt->{txt01} = $q->unescapeHTML("$ctt->{txt01}");
|
||||
if($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";#c_id from contenttrans
|
||||
print $q->hidden(-name=>'int10', -override=>'1', -value=>"$c_idadr"),"\n";
|
||||
#print $q->hidden(-name=>'txt26', -override=>'1', -value=>"$mandat"),"\n";
|
||||
print $q->hidden(-name=>'c_idadr', -override=>'1', -value=>"$c_idadr"),"\n";
|
||||
print $q->hidden(-name=>'rel_id', -override=>'1', -value=>"$rel4tpl->{rel_id}"),"\n";
|
||||
print $q->hidden(-name=>'u_id', -override=>'1', -value=>"$u_id"),"\n";
|
||||
print $q->Tr(),"\n";
|
||||
print "<td class='tdtxt' nowrap>";
|
||||
print $but->singlesubmit7("ct_trans","save_adr","$ib{save_adr}","","","ebutton4"),"\n";
|
||||
#print $q->span($q->a({-class=>"ebutton3",-href=>'javascript:history.back()'}, " back "));
|
||||
print "</td>\n";
|
||||
print $q->td({-class=>'tdval',-nowrap=>1}, $but->selector("txt02","60px",$ctt->{txt02},@_anrede)),"\n";
|
||||
#print $q->td({-class=>'tdval'}," ID $c_idadr $mandat"),"\n";
|
||||
print $q->td({-class=>'tdval'},"Kunden ID $c_idadr"),"\n";
|
||||
$ctt->{txt01} = $lb->newline($ctt->{txt01},"","1");
|
||||
print $q->Tr(),"\n";
|
||||
print $q->td({-class=>'tdescr'},"Vorname Name<br />Zusatz"),"\n";
|
||||
print $q->td({-class=>'tdval',-colspan=>'2'},$q->textarea(-class=>'autos',-style=>'border:1px solid #ededed;background-color: #ededed;', -name=>'txt01', -default=>"$ctt->{txt01}", -rows=>1, -columns=>38)),"\n";
|
||||
print $q->Tr(),"\n";
|
||||
print $q->td({-class=>'tdescr'},"Straße Nr."),"\n";
|
||||
print $q->td({-class=>'tdval',-colspan=>'2',-nowrap=>1}, $q->textfield(-class=>'etxt',-name=>'txt03', -default=>"$ctt->{txt03}", -size=>'34', maxlength=>'45')),"\n";
|
||||
print $q->Tr(),"\n";
|
||||
print $q->td({-class=>'tdescr'},"PLZ Ort"),"\n";
|
||||
print $q->td({-class=>'tdval',-colspan=>'2'}, $q->textfield(-class=>'etxt',-name=>'txt06', -default=>"$ctt->{txt06}", -size=>'34', maxlength=>'45')),"\n";
|
||||
print $q->Tr(),"\n";
|
||||
print $q->td({-class=>'tdescr'},"eMail"),"\n";
|
||||
print $q->td({-class=>'tdval',-colspan=>'2'}, $q->textfield(-class=>'etxt',-name=>'txt08', -default=>"$ctt->{txt08}", -size=>'34', maxlength=>'45')),"\n";
|
||||
}elsif($u_id){
|
||||
print $q->Tr(),"\n";
|
||||
if(!$ctx->{close_time}){
|
||||
print "<td class='tdtxt' style='width:8em;' nowrap>";
|
||||
print $but->singlesubmit2glyph("trans2edit","client","Kunden bearbeiten","background-color:white;"),"\n";
|
||||
print $q->hidden(-name=>'c_id4trans', -override=>'1', -value=>"$ctx->{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";
|
||||
print $q->textfield(-style=>'border:1px solid silver;vertical-align: top;',-id=>"json_selectadr",-name=>"json_selectadr", -value=>""),"\n";
|
||||
print "</td>\n";
|
||||
}else{
|
||||
print $q->td({-class=>'tdtxt'}," "),"\n";
|
||||
}
|
||||
|
||||
print $q->td({-class=>'tdval'},"$ctt->{txt02}"),"\n";
|
||||
if($c_idadr && $rel_adr->{rel_id}){
|
||||
print $q->td({-class=>'tdval'},$q->span({-style=>"background-color:#dcd77f;"},$q->a({-class=>"linknav",-href=>"/$users->{fullurl}/Kunden?node2edit=editpart\&mode=manager\&rel_id=$rel_adr->{rel_id}\&tpl_id=202",-title=>"Kunden Stammdaten öffnen"}," Kunden ID $c_idadr ")), $q->span({-style=>"color:red;"}," $ctadr->{int12}")),"\n";
|
||||
}
|
||||
if($ctt->{txt01} || $ctt->{txt02} || $ctt->{txt07} || $ctt->{txt08}){
|
||||
$ctt->{txt01} = $lb->newline($ctt->{txt01},"","");
|
||||
print $q->Tr(),"\n"; $line_count1++;
|
||||
print $q->td({-class=>'tdtxt'}," "),"\n";
|
||||
print $q->td({-class=>'tdval',-colspan=>2},"$ctt->{txt01}"),"\n";
|
||||
print $q->Tr(),"\n"; $line_count1++;
|
||||
print $q->td({-class=>'tdtxt'}," "),"\n";
|
||||
print $q->td({-class=>'tdval',-colspan=>2},"$ctt->{txt03}"),"\n";
|
||||
print $q->Tr(),"\n"; $line_count1++;
|
||||
print $q->td({-class=>'tdtxt'}," "),"\n";
|
||||
print $q->td({-class=>'tdval',-colspan=>2},"$ctt->{txt06}"),"\n";
|
||||
print $q->Tr(),"\n"; $line_count1++;
|
||||
print $q->td({-class=>'tdtxt'}," "),"\n";
|
||||
print $q->td({-class=>'tdval',-colspan=>2},"$ctt->{txt08}"),"\n";
|
||||
}
|
||||
}
|
||||
print $q->end_table;
|
||||
print "</td>\n";
|
||||
|
||||
my $txt20 = $ctt->{txt20} || $ctf->{txt80};
|
||||
my $int05 = "";
|
||||
$int05 = "(manuell)" if($ctt->{int05});
|
||||
|
||||
print "<td width='50%' style='font-size:1em;'>\n";
|
||||
print $q->start_table({-class=>'list', -border=>'0', -width=>'100%',-align=>'left', -cellpadding=>'0', -cellspacing=>'0'}),"\n";
|
||||
if($u_id && ($R::trans2edit eq "client" || $R::ct_trans eq "add_transadr")){
|
||||
print $q->Tr(),"\n";
|
||||
print $q->td({-class=>'tdescr'},"RFID"),"\n";
|
||||
print $q->td({-class=>'tdval'}, $q->textfield(-class=>'etxt',-name=>'txt09', -default=>"$ctt->{txt09}", -size=>'25', maxlength=>'40')),"\n";
|
||||
print $q->Tr(),"\n";
|
||||
print $q->td({-class=>'tdescr'},"Telefon"),"\n";
|
||||
print $q->td({-class=>'tdval'}, $q->textfield(-class=>'etxt',-name=>'txt07', -default=>"$ctt->{txt07}", -size=>'25', maxlength=>'40')),"\n";
|
||||
print $q->Tr(),"\n";
|
||||
print $q->td({-class=>'tdescr'},"Leistungsdatum"),"\n";
|
||||
print $q->td({-class=>'tdval'}, $q->textfield(-class=>'etxt',-name=>'txt20', -default=>"$txt20", -size=>'25', maxlength=>'60'),$but->checkbox("1","int05","$ctt->{int05}"),"manuell"),"\n";
|
||||
print $q->hidden(-name=>"int05",-override=>1,-value=>"");
|
||||
}else{
|
||||
if($ctt->{txt09}){
|
||||
print $q->Tr(),"\n";
|
||||
print $q->td({-class=>'tdescr'},"RFID"),"\n";
|
||||
print $q->td({-class=>'tdval'},"$ctt->{txt09}"),"\n";
|
||||
}
|
||||
if($ctt->{txt07}){
|
||||
print $q->Tr(),"\n";
|
||||
print $q->td({-class=>'tdescr'},"Telefon"),"\n";
|
||||
print $q->td({-class=>'tdval',-style=>'min-width:20em;'},"$ctt->{txt07}"),"\n";
|
||||
}
|
||||
if($txt20){
|
||||
print $q->Tr(),"\n";$line_count1++;
|
||||
print $q->td({-class=>'tdescr'},"Leistungsdatum"),"\n";
|
||||
if($ctt->{txt20}){
|
||||
print $q->td({-class=>'tdval'},"$ctt->{txt20} $int05"),"\n";
|
||||
}else{
|
||||
print $q->td({-class=>'tdval'},"Zur Info: Anhand der Einstellung werden nur Positionen bis Buchungsdatum \"$ctf->{txt80}\" erfasst. Für Buchungen neueren Datums wird nach dem \"buchen\" eine weitere Rechnung generiert."),"\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#payone is working?
|
||||
#keep in mind
|
||||
#$ctx is primarly contenttrans
|
||||
#$ctt = $ctx
|
||||
#$ctt will partly overwritten by contentadr if address changes
|
||||
my $pay_sequence = " | sequencenr: $ctt->{int18}" if($ctt->{int18});
|
||||
if($ctt->{int03} && $ctt->{txt16}){
|
||||
my @_paymentstate = split(/\|/,$varenv{Zahlungsweise});
|
||||
my $kind_of_payment = "fehlt";
|
||||
$kind_of_payment = "$_paymentstate[0]" if($ctt->{int03} == 1);
|
||||
$kind_of_payment = "$_paymentstate[1]" if($ctt->{int03} == 2);
|
||||
print $q->Tr(),"\n";
|
||||
print $q->td({-class=>'tdescr'},"Payone Zahlungsart"),"\n";
|
||||
print $q->td({-class=>'tdval'},"$kind_of_payment"),"\n";
|
||||
print $q->Tr(),"\n";
|
||||
print $q->td({-class=>'tdescr'},"Payone TXID"),"\n";
|
||||
print $q->td({-class=>'tdval'},"$ctt->{txt16}"),"\n";
|
||||
print $q->Tr(),"\n";
|
||||
print $q->td({-class=>'tdescr'},"Payone Saldo"),"\n";
|
||||
print $q->td({-class=>'tdval'},"$ctt->{int16} $pay_sequence"),"\n";
|
||||
if($ctt->{txt28} =~ /error/i){
|
||||
print $q->Tr(),"\n";
|
||||
print $q->td({-class=>'tdescr'},"payone error"),"\n";
|
||||
print $q->td({-class=>'tdval'},"(transaction) $ctt->{txt28}"),"\n";
|
||||
}
|
||||
}else{
|
||||
#check payone status
|
||||
if($ctt->{txt28} =~ /error/i){
|
||||
print $q->Tr(),"\n";
|
||||
print $q->td({-class=>'tdescr'},"payone error"),"\n";
|
||||
print $q->td({-class=>'tdval'},"(transaction) $ctt->{txt28}"),"\n";
|
||||
}elsif($ctadr->{txt28} =~ /error/i){
|
||||
print $q->Tr(),"\n";
|
||||
print $q->td({-class=>'tdescr'},"payone error"),"\n";
|
||||
print $q->td({-class=>'tdval'},"(address) $ctadr->{txt28}"),"\n";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
print $q->end_table;
|
||||
print "</td></tr>\n";
|
||||
|
||||
###end
|
||||
print $q->end_form,"\n";
|
||||
|
||||
|
||||
###Content #Edit Parts
|
||||
print "<tr><td colspan='5' style='font-size:1em;'>\n";
|
||||
|
||||
#require "Tpl/TransPositionen.pm";
|
||||
my $line_count2 = $transp->tpl($node_meta,$users_dms,$set_main_id,$rel4tpl->{main_id},$rel4tpl->{rel_id},$ctx->{c_id},$u_id,$lang,"$return","$node->{node_name}");
|
||||
|
||||
print "</td></tr>\n";
|
||||
###end Edit Parts
|
||||
|
||||
#Text & Vorbelegungen
|
||||
my $tplf = $db->get_tpl("201");#Firma tpl
|
||||
my @tplf_order = split /,/,$tplf->{tpl_order};
|
||||
|
||||
|
||||
print $q->start_form(),"\n";
|
||||
print "<tr><td colspan='5' style='font-size:1.1em;padding-top:1em;'>\n";
|
||||
print $q->start_table({-class=>'list', -border=>'0', -width=>'100%',-align=>'left', -cellpadding=>'0', -cellspacing=>'0'}),"\n";
|
||||
|
||||
|
||||
print $q->Tr(),"\n";
|
||||
print $q->td({-class=>'tdval4',-colspan=>"2"},$q->span({-style=>'font-weight:bold;'},"Internas und Bearbeitungstatus")),"\n";
|
||||
if($varenv{order_state}){
|
||||
print $q->Tr(),"\n";
|
||||
my @_orderstate = split(/\|/,$varenv{order_state});
|
||||
print $q->td({-class=>'tdval4',-colspan=>2},$but->selector("txt22","180px",$ctt->{txt22},@_orderstate)),"\n";
|
||||
}
|
||||
$ctt->{txt23} = $q->unescapeHTML("$ctt->{txt23}") if($ctt->{txt23});
|
||||
print $q->Tr(),"\n";
|
||||
print $q->td({-class=>'tdval4',-colspan=>'2'},$q->textarea(-class=>'etxt',-name=>'txt23', -default=>"$ctt->{txt23}", -rows=>4, -columns=>90)),"\n";
|
||||
|
||||
print $q->hidden(-name=>'c_id4trans', -override=>'1', -value=>"$ctx->{c_id}");
|
||||
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} && $ctt->{txt21} !~ /\,/);
|
||||
print $q->Tr(),"\n";
|
||||
print $q->td({-class=>'tdval',-colspan=>2}, $but->singlesubmit7("ct_trans","save_text_internas","$ib{save_text}","","","$ebutton")),"\n" if($ctx->{close_time});
|
||||
|
||||
|
||||
if($ctx->{close_time}){
|
||||
print $q->end_form,"\n";
|
||||
print $q->start_form(),"\n";
|
||||
}
|
||||
|
||||
print $q->Tr(),"\n";
|
||||
print $q->td({-class=>'tdval4',-colspan=>"2"},$q->span({-style=>'font-weight:bold;'},"PDF Formular Texte "),$q->span({-style=>'color:silver;font-weight:normal;'}," ( z.T. Definitionen aus Einstellung/Firma )")),"\n";
|
||||
|
||||
#Zahlungstexte
|
||||
foreach(@tplf_order){
|
||||
my ($key,$des,$size) = split /=/,$_;
|
||||
if($key =~ /txt5/ && $ctf->{$key}){
|
||||
my @line_txt = split(/\n/,$ctf->{$key});
|
||||
$line_count1 += scalar(@line_txt);
|
||||
$ctf->{$key} = $q->unescapeHTML("$ctf->{$key}");
|
||||
$ctf->{$key} = $lb->newline($ctf->{$key},"","");
|
||||
if("$des" =~ /$ctt->{state}/){
|
||||
print $q->Tr(),"\n"; $line_count1++;
|
||||
if($ctt->{int01} < 0){
|
||||
#print $q->td({-class=>'tdval4',-style=>'width:8em;'},"Gutschrift Text"),"\n";
|
||||
print $q->td({-class=>'tdval4',-colspan=>2},"$ctf->{txt58}"),"\n";
|
||||
}else{
|
||||
#print $q->td({-class=>'tdval4',-style=>'width:8em;'},"$des"),"\n";
|
||||
print $q->td({-class=>'tdval4',-colspan=>2},"$ctf->{$key}"),"\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$ctt->{txt12} = $q->unescapeHTML($ctt->{txt12}) || "";
|
||||
print $q->Tr(),"\n";
|
||||
print $q->td({-class=>'tdval4',-colspan=>'2'},$q->textarea(-class=>'etxt',-name=>'txt12', -default=>"$ctt->{txt12}", -rows=>4, -columns=>90)),"\n";
|
||||
|
||||
print $q->Tr(),"\n"; $line_count1++;
|
||||
my @line_txt12 = split(/\n/,$ctt->{txt12});
|
||||
$line_count1 += scalar(@line_txt12);
|
||||
|
||||
#Vorbelegung-Text
|
||||
my $formular_text = "";
|
||||
my $set_text_id;
|
||||
#at first empty checkbox definition (txt21='txt61,txt62,...')
|
||||
print $q->hidden(-name=>"off_txt21",-override=>1,-value=>"");
|
||||
foreach(@tplf_order){
|
||||
my ($key,$des,$size) = split /=/,$_;
|
||||
if($key =~ /txt6/ && $ctf->{$key}){
|
||||
$ctf->{$key} = $q->unescapeHTML("$ctf->{$key}");
|
||||
my $substrtxt = $lb->sub4txt($ctf->{$key},"0","14");
|
||||
my $check="";
|
||||
$check=1 if($ctt->{txt21} && $ctt->{txt21} =~ /$key/);
|
||||
$formular_text .= " [ $key $substrtxt..." . $but->checkbox("$key","$key","$check","$ctf->{$key}") . " ] ";
|
||||
if($ctt->{txt21} && $ctt->{txt21} =~ /$key/){
|
||||
my @line_key = split(/\n/,$ctf->{$key});
|
||||
$line_count1 += scalar(@line_key);
|
||||
$ctf->{$key} = $lb->newline($ctf->{$key},"","");
|
||||
print $q->Tr(); $line_count1++;
|
||||
print $q->td({-class=>'tdval4',-colspan=>2},"$ctf->{$key}"),"\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
###
|
||||
|
||||
print $q->hidden(-name=>'c_id4trans', -override=>'1', -value=>"$ctx->{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} !~ /\,/);
|
||||
print $q->Tr(),"\n";
|
||||
print $q->td({-class=>'tdval',-colspan=>2}, $but->singlesubmit7("ct_trans","save_text","$ib{save_text}","","","$ebutton"),"$formular_text"),"\n" if(!$ctx->{close_time});
|
||||
|
||||
print $q->end_table,"\n";
|
||||
print "</td></tr>\n";
|
||||
|
||||
print $q->end_form,"\n";
|
||||
|
||||
print $q->end_table,"\n";
|
||||
###end Big
|
||||
|
||||
|
||||
$line_count2 = "0" . "$line_count2" if($line_count2 < 10);
|
||||
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 "</div>\n";
|
||||
$db->update_content4change2("contenttrans",$ctx->{c_id},"$line_count","int04") if($ctx->{c_id});
|
||||
return $line_count;
|
||||
}
|
||||
1;
|
146
copri4/main/src/Tpl/AttributEdit.pm
Normal file
146
copri4/main/src/Tpl/AttributEdit.pm
Normal file
|
@ -0,0 +1,146 @@
|
|||
package AttributEdit;
|
||||
#
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
# Copyright (c) Rainer Gümpelein, TeilRad GmbH
|
||||
#
|
||||
use strict;
|
||||
use warnings;
|
||||
use CGI::Carp qw(fatalsToBrowser);
|
||||
use CGI ':standard';
|
||||
use Lib::Config;
|
||||
use Mod::Buttons;
|
||||
use Mod::Libenz;
|
||||
use Mod::Libenzdb;
|
||||
use Mod::DBtank;
|
||||
|
||||
sub new {
|
||||
my $class = shift;
|
||||
my $self = {};
|
||||
bless($self,$class);
|
||||
return $self;
|
||||
}
|
||||
|
||||
#Template
|
||||
sub tpl(){
|
||||
my $node_meta = shift;
|
||||
my $users_dms = shift;
|
||||
my $mode = shift;
|
||||
my $return = shift;
|
||||
|
||||
my $q = new CGI;
|
||||
my $cf = new Config;
|
||||
my $lb = new Libenz;
|
||||
my $db = new Libenzdb;
|
||||
my $dbt = new DBtank;
|
||||
my $but = new Buttons;
|
||||
|
||||
my %varenv = $cf->envonline();
|
||||
my $script = $q->script_name();
|
||||
my $path = $q->path_info();
|
||||
my %ib = $but->ibuttons();
|
||||
my $dbh = "";
|
||||
my $tpl = $db->get_tpl($R::tpl_id);#Master template
|
||||
my @tpl_order = split /,/,$tpl->{tpl_order};
|
||||
|
||||
my @_attr;
|
||||
my $asort=0;
|
||||
my $des_name;
|
||||
my $key_txt;
|
||||
my $checked_txt;
|
||||
my $key_txtarea;
|
||||
my $checked_txtarea;
|
||||
my $key_int;
|
||||
my $checked_int;
|
||||
my $key_intcheck;
|
||||
my $checked_intcheck;
|
||||
my ($key,$des,$size);
|
||||
foreach (@tpl_order){
|
||||
$asort++;
|
||||
($key,$des,$size) = split /=/,$_;
|
||||
#push (@_attr, "$key") if($key);
|
||||
if("$key" eq "$R::key"){
|
||||
$des_name = $des;
|
||||
if($key =~ /ct_name/){
|
||||
last;
|
||||
}
|
||||
elsif($key =~ /txt(\d+)/ && $size =~ /area/){
|
||||
$key_txtarea = $1;
|
||||
$checked_txtarea = "checked";
|
||||
last;
|
||||
}
|
||||
elsif($key =~ /txt(\d+)/){
|
||||
$key_txt = $1;
|
||||
$checked_txt = "checked";
|
||||
last;
|
||||
}
|
||||
elsif($key =~ /int(\d+)/ && $size =~ /checkbox/){
|
||||
$key_intcheck = $1;
|
||||
$checked_intcheck = "checked";
|
||||
last;
|
||||
}
|
||||
elsif($key =~ /int(\d+)/){
|
||||
$key_int = $1;
|
||||
$checked_int = "checked";
|
||||
last;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$tpl->{change} = $lb->time4de($tpl->{change},"1") if($tpl->{change});
|
||||
my $u_name = $tpl->{owner};
|
||||
|
||||
$u_name = $dbt->sys_username($dbh,$tpl->{owner});
|
||||
|
||||
print "<div style='border: 0px solid gray;margin: 0 auto;padding: 0;min-width: 100%;min-height: 150px;font-size: 14px;'>";
|
||||
print $q->hidden(-name=>'key', -value=>"$R::key",-override=>'1');
|
||||
|
||||
print $q->start_table({-class=>'list', -border=>'0', -width=>'100%', -align=>'left', -cellpadding=>'3', -cellspacing=>'3'});
|
||||
#Buttons
|
||||
print $q->Tr();
|
||||
print "<td style='background:$varenv{background_color2};margin:1px 0;padding:2px;' colspan='2' nowrap>\n";
|
||||
print $but->singlesubmit7("rel_edit","save_attrtpl","","");
|
||||
print $but->singlesubmit7("rel_edit","remove_chk4attr","","margin-left:10px;");
|
||||
#print $but->singlesubmit9("dummy","zurück","","ebutton","","");
|
||||
print $q->span({-style=>'margin-left:5em; font-size:0.91em;'}, "$u_name / $tpl->{change}");
|
||||
print "</td>\n";
|
||||
|
||||
print $q->Tr();
|
||||
print $q->td({-colspan=>'2'}," ");
|
||||
print $q->Tr();
|
||||
print $q->td({-class=>'tdescr'}, "Service Datenfeldname"),"\n";
|
||||
print $q->td({-class=>'tdval'},$q->textfield(-class=>'etxt',-name=>"des", -override=>'1',-default=>"$des_name")),"\n";
|
||||
if($key =~ /txt|int/){
|
||||
print $q->Tr();
|
||||
print $q->td({-class=>'tdescr'}, "Datentyp"),"\n";
|
||||
print "<td class='tdval'>\n";
|
||||
if($R::key =~ /txt/){
|
||||
print $but->radiobox("txt","key_typ","$checked_txt"),"Textzeile\n";
|
||||
print $but->radiobox("txt_area","key_typ","$checked_txtarea"),"Textarea\n";
|
||||
}elsif($R::key =~ /int/){
|
||||
print $but->radiobox("int","key_typ","$checked_int"),"Dezimalzahl\n";
|
||||
print $but->radiobox("int_checkbox","key_typ","$checked_intcheck"),"Checkbox\n";
|
||||
}
|
||||
print "</td>\n";
|
||||
}
|
||||
print $q->Tr();
|
||||
print $q->td({-class=>'tdescr'},"Sortierung"),"\n";
|
||||
print $q->td({-class=>'tdval'},$q->textfield(-class=>'etxt', -name=>"asort", -default=>"$asort")),"\n";
|
||||
#print $q->Tr();
|
||||
#print $q->td({-class=>'tdescr'},"Text Vorauswahl"),"\n";
|
||||
#my $pre_values = $q->unescapeHTML("$ctf->{$R::key}");
|
||||
#print $q->td({-class=>'tdval'},$q->textarea(-id=>"prev", -class=>'etxt',-style=>"width:300px;",-rows=>"1", -name=>"pre_values",-default=>"$pre_values", -override=>'1')),"\n";
|
||||
#print "<script>\$(\"textarea#prev\").autoResize({extraSpace:10});</script>";
|
||||
#print $q->hidden(-name=>'cuid_glob', -value=>"$cuid_glob",-override=>'1');
|
||||
|
||||
#print $q->Tr();
|
||||
#print $q->td({-class=>'tdescr',-colspan=>'2'},""),"\n";
|
||||
#print $q->Tr();
|
||||
#print $q->td({-class=>'tdescr',-colspan=>'2'},"Achtung, das löschen oder ändern verursacht Datenverlust."),"\n";
|
||||
|
||||
print $q->end_table;
|
||||
|
||||
print "</div>";
|
||||
}
|
||||
1;
|
||||
|
205
copri4/main/src/Tpl/AttributMatrix.pm
Normal file
205
copri4/main/src/Tpl/AttributMatrix.pm
Normal file
|
@ -0,0 +1,205 @@
|
|||
package AttributMatrix;
|
||||
#
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
# Copyright (c) Rainer Gümpelein, TeilRad GmbH
|
||||
#
|
||||
use strict;
|
||||
use warnings;
|
||||
use CGI::Carp qw(fatalsToBrowser);
|
||||
use CGI ':standard';
|
||||
use Lib::Config;
|
||||
use Mod::Buttons;
|
||||
use Mod::Libenz;
|
||||
use Mod::Libenzdb;
|
||||
use Mod::DBtank;
|
||||
|
||||
sub new {
|
||||
my $class = shift;
|
||||
my $self = {};
|
||||
bless($self,$class);
|
||||
return $self;
|
||||
}
|
||||
|
||||
#Template
|
||||
sub tpl(){
|
||||
my $node_meta = shift;
|
||||
my $users_dms = shift;
|
||||
my $mode = shift;
|
||||
my $return = shift;
|
||||
|
||||
my $q = new CGI;
|
||||
my $cf = new Config;
|
||||
my $lb = new Libenz;
|
||||
my $db = new Libenzdb;
|
||||
my $but = new Buttons;
|
||||
my $dbt = new DBtank;
|
||||
|
||||
my %varenv = $cf->envonline();
|
||||
my $script = $q->script_name();
|
||||
my $path_info = $q->path_info();
|
||||
my $path = $path_info;
|
||||
if("$varenv{metahost}"){
|
||||
$path = "$script" . "$path_info";
|
||||
$script="";
|
||||
}
|
||||
my $dbh = "";
|
||||
my $lang = "de";
|
||||
my %ib = $but->ibuttons_arch();
|
||||
|
||||
my @viewsel = split /\//,$1 if($path =~ /^\/(.*)/);
|
||||
|
||||
my $tpl_master = $db->get_tpl("400");
|
||||
my @tpl_masterorder = ();
|
||||
my $node = {};
|
||||
|
||||
if($users_dms->{int08} == 2){
|
||||
print<<EOF
|
||||
<script>
|
||||
|
||||
\$(function() {
|
||||
function postValues() {
|
||||
var data = \$("input[type='checkbox'], input[type='text'], input[type='hidden']").serialize();
|
||||
\$.ajax({
|
||||
url: '$varenv{wwwhost}/ajax_post',
|
||||
type: 'POST',
|
||||
async: true,
|
||||
cache: false,
|
||||
data: data,
|
||||
});
|
||||
}
|
||||
\$("input[type='checkbox']").on( "click", postValues );
|
||||
\$("input[type='text']").on( "change", postValues );
|
||||
|
||||
});
|
||||
</script>
|
||||
EOF
|
||||
;
|
||||
}
|
||||
|
||||
if($users_dms->{int08} >= 1){
|
||||
@tpl_masterorder = split /,/,$tpl_master->{tpl_order};
|
||||
my $pref = { template_id1 => 401,
|
||||
template_id2 => 499,
|
||||
fetch => "all",
|
||||
keyfield => "main_id",
|
||||
};
|
||||
$node = $dbt->fetch_rel4tpl4nd($dbh,$pref);
|
||||
}else{
|
||||
$return = "failure::Abbruch. Keine Zugriffsberechtigung";
|
||||
}
|
||||
|
||||
|
||||
sub checkbox_style2() {
|
||||
my ($sid_key,$dialog) = @_;
|
||||
my $ck_style = "<style type='text/css'><!--
|
||||
.sq_$dialog$sid_key {margin:auto;position: relative;width: 16px;height: 16px;}
|
||||
.sq_$dialog$sid_key label {cursor: pointer;position: absolute;width: 16px;height: 16px;background:#cccccc;top: 0%;left: 0%;}
|
||||
.sq_$dialog$sid_key :checked + label {content: '';position: absolute;width: 16px;height: 16px;background: #333333;top: 0%;left: 0%;}
|
||||
//--></style>\n";
|
||||
return $ck_style;
|
||||
}
|
||||
|
||||
print "<div id='Content4list'>\n";
|
||||
|
||||
print $q->div({-class=>"copri_header",-style=>"background-color:#cccccc;"},"$path",$q->span("(shareetool Datenfeld Matrix)"));
|
||||
|
||||
print $q->start_form();
|
||||
print $q->hidden(-name=>'mode', -override=>1, -value=>"supervisor");
|
||||
|
||||
#table header
|
||||
print $q->start_table({-border=>'0', -width=>'100%',-align=>'center', -cellpadding=>'0', -cellspacing=>'0'});
|
||||
print $q->Tr();
|
||||
if($users_dms->{int08} == 2){
|
||||
#print $q->th({-style=>'text-align:right;padding:1px 3px;font-size:1em;'},"Datenfeld", $but->singlesubmit2("rel_edit","new_attrtpl_int","$ib{new_attrtpl_int}","background-color:silver;"), $but->singlesubmit2("rel_edit","new_attrtpl_txt","$ib{new_attrtpl_txt}","background-color:silver;")),"\n";
|
||||
print $q->th({-style=>'text-align:right;padding:1px 3px;font-size:1em;'},"Datenfeld", $but->singlesubmit2glyph("rel_edit","new_attrtpl_int","$ib{new_attrtpl_int}","background-color:silver;")),"\n";
|
||||
}else{
|
||||
print $q->th({-style=>'text-align:right;padding:1px 3px;font-size:1em;'},""),"\n";
|
||||
}
|
||||
#foreach my $id (sort {$node->{$a}->{n_sort} <=> $node->{$b}->{n_sort}} keys (%$node)){
|
||||
foreach my $id (sort {$node->{$a}->{node_name} cmp $node->{$b}->{node_name}} keys (%$node)){
|
||||
if($node->{$id}->{template_id}){
|
||||
if($node->{$id}->{main_id} == $node_meta->{main_id}){
|
||||
print $q->hidden(-name=>'template_id',-override=>'1', -value=>"$node->{$id}->{template_id}");
|
||||
print $q->th({-class=>'thmatrix',-nowrap=>1,-colspan=>2}, $q->b("$node->{$id}->{node_name}")),"\n";
|
||||
}else{
|
||||
if($users_dms->{int08} == 2){
|
||||
my $uri_path = $dbt->recurse_node($dbh,$node->{$id}->{main_id});
|
||||
print $q->th({-class=>'thmatrix',-nowrap=>1,-colspan=>2}, $q->a({-class=>"sortnav",-href=>"/$uri_path/supervisor",-title=>'aktivieren'}, "$node->{$id}->{node_name}")),"\n";
|
||||
}else{
|
||||
print $q->th({-class=>'thmatrix',-nowrap=>1,-colspan=>2},"$node->{$id}->{node_name}"),"\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#table content
|
||||
my $j=0;
|
||||
my $set_style;
|
||||
my $checked="";
|
||||
#tpl_id=400
|
||||
foreach (@tpl_masterorder){
|
||||
$j++;
|
||||
$set_style = "background-color:#fcfdfb;";
|
||||
$set_style = "background-color:#f4f1ee;" if($j %= 2);
|
||||
print $q->Tr();
|
||||
my ($m_key,$m_des,$m_size) = split /=/,$_;
|
||||
if($m_key !~ /img|time|c_id|barcode|int04|owner/){#static
|
||||
print $q->td({-class=>'tdtxtw', -style=>"$set_style"},$q->a({-class=>'sortnav',-href=>"/$viewsel[0]/$viewsel[1]/$viewsel[2]/supervisor?node2edit=edit_template\&tpl_id=$tpl_master->{tpl_id}\&key=$m_key", -title=>"edit ($j)"},"$m_des")),"\n";
|
||||
}else{
|
||||
print $q->td({-class=>'tdtxtw', -style=>"$set_style"},$q->a({-class=>'sortnav',-href=>"#", -title=>"static"},"$m_des")),"\n";
|
||||
}
|
||||
foreach my $id (sort {$node->{$a}->{node_name} cmp $node->{$b}->{node_name}} keys (%$node)){
|
||||
my $cat_off="";
|
||||
my $m_style="margin:auto;width:16px;height:16px;background-color:#cccccc;";
|
||||
my $interval="";
|
||||
#tpl_id > 400 and depends on node
|
||||
if($node->{$id}->{tpl_order} =~ /$m_key=[a-z0-9-_ ]+=[a-z0-9-_]+=(\d+)/i){
|
||||
$interval = $1;
|
||||
}
|
||||
my $service_type="";
|
||||
if($node->{$id}->{tpl_order} =~ /$m_key=[a-z0-9-_ ]+=[a-z0-9-_]+=\d+=(\d+)/i){
|
||||
$service_type = $1;
|
||||
}
|
||||
|
||||
if($node->{$id}->{main_id} == $node_meta->{main_id}){
|
||||
my $ck_style = &checkbox_style2($m_key,"attr");
|
||||
print "$ck_style";
|
||||
$checked="";
|
||||
$checked="checked" if($node->{$id}->{tpl_order} =~ /$m_key/);
|
||||
}else{
|
||||
$cat_off=1;
|
||||
$m_style="margin:auto;width:16px;height:16px;background-color:#717171;" if($node->{$id}->{tpl_order} =~ /$m_key/);
|
||||
}
|
||||
#my @tpl_node = split /,/,$node->{$id}->{tpl_order};
|
||||
foreach (@tpl_masterorder){
|
||||
my ($key,$des,$size) = split /=/,$_;
|
||||
if($m_key eq $key){
|
||||
if($cat_off){
|
||||
my $itext = "";
|
||||
my $ytext = "";
|
||||
if($interval){
|
||||
$itext = "$interval Tage Intervall";
|
||||
$ytext = "";
|
||||
$ytext = " | weich=1" if($service_type eq 1);
|
||||
}
|
||||
$ytext = " | hart=2" if($service_type eq 2);
|
||||
print $q->td({-class=>'tdtxtc', -style=>"$set_style"},$q->div({-style=>"$m_style"},"")),"\n";
|
||||
print $q->td({-class=>'tdtxtc', -style=>"$set_style text-align:left"},$q->div({-style=>""},"$itext $ytext")),"\n";
|
||||
}else{
|
||||
#print $q->td({-class=>'tdtxtc', -style=>"$set_style"},$q->div({ -class => "sq_attr$key" },"<input type='checkbox' id='sq_attr$key' name='matrix_template' value='$key=$des=$size' $checked><label for='sq_attr$key'></label>")),"\n";
|
||||
print $q->td({-class=>'tdtxtc', -style=>"$set_style"},$q->div({ -class => "sq_attr$key" },"<input type='checkbox' id='sq_attr$key' name='matrix_template' value='$key=$des=$size' $checked><label for='sq_attr$key'></label>")),"\n";
|
||||
print $q->td({-class=>'tdtxtc', -style=>"$set_style text-align:left;"}, $q->textfield(-class=>'etxt',-size=>'1',-name=>"interval_$key", -override=>'1',-default=>"$interval"), "Tage Intervall | Typ ", $q->textfield(-class=>'etxt',-size=>'1',-name=>"servicetype_$key", -override=>'1',-default=>"$service_type")),"\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
print $q->end_table;
|
||||
print $q->end_form;
|
||||
|
||||
print "</div>\n";
|
||||
return $return;
|
||||
}
|
||||
1;
|
608
copri4/main/src/Tpl/BaseEdit.pm
Normal file
608
copri4/main/src/Tpl/BaseEdit.pm
Normal file
|
@ -0,0 +1,608 @@
|
|||
package BaseEdit;
|
||||
#
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
# Copyright (c) Rainer Gümpelein, TeilRad GmbH
|
||||
#
|
||||
#use lib "/var/www/copri4/shareedms-primary/src";
|
||||
#
|
||||
use strict;
|
||||
use warnings;
|
||||
use POSIX;
|
||||
use CGI::Carp qw(fatalsToBrowser);
|
||||
use CGI ':standard';
|
||||
use Lib::Config;
|
||||
use Mod::Buttons;
|
||||
use Date::Calc qw(:all);
|
||||
use Mod::Libenz;
|
||||
use Mod::Libenzdb;
|
||||
use Mod::Basework;
|
||||
use Mod::DBtank;
|
||||
use Mod::APIfunc;
|
||||
use Data::Dumper;
|
||||
|
||||
sub new {
|
||||
my $class = shift;
|
||||
my $self = {};
|
||||
bless($self,$class);
|
||||
return $self;
|
||||
}
|
||||
|
||||
#Template
|
||||
sub tpl(){
|
||||
my $node_meta = shift;
|
||||
my $users_dms = shift;
|
||||
my $u_group = shift;
|
||||
my $return = shift;
|
||||
|
||||
my $q = new CGI;
|
||||
my $cf = new Config;
|
||||
my $lb = new Libenz;
|
||||
my $db = new Libenzdb;
|
||||
my $bw = new Basework;
|
||||
my $dbt = new DBtank;
|
||||
my $apif = new APIfunc;
|
||||
my $but = new Buttons;
|
||||
my %ib = $but->ibuttons();
|
||||
|
||||
my %varenv = $cf->envonline();
|
||||
my $lang = "de";
|
||||
my $dbh = "";
|
||||
#print $dbt->{operator}->{$varenv{dbname}}->{oprefix};
|
||||
|
||||
my $rel_id = $1 if($R::rel_id && $R::rel_id =~ /(\d+)/);
|
||||
my $u_id = $1 if($R::u_id && $R::u_id =~ /(\d+)/);
|
||||
$u_id = $1 if($R::c_idadr && $R::c_idadr =~ /(\d+)/ && $R::base_edit eq "new_dmsusers");
|
||||
my ($edit,$copy_key,$save_key,$relate_key,$move_key,$delete_key,$package_key);
|
||||
my $tpl;
|
||||
my @tpl_order;
|
||||
my $edit_template;
|
||||
my $bg_color = "grey";
|
||||
my $ctrel = {};
|
||||
if($node_meta->{ct_table} eq "content" && $node_meta->{tpl_id}){
|
||||
my $ref = {
|
||||
table => "$node_meta->{ct_table}",
|
||||
fetch => "one",
|
||||
template_id => "$node_meta->{tpl_id}",
|
||||
rel_id => "$rel_id",
|
||||
};
|
||||
$ctrel = $dbt->fetch_record($dbh,$ref);
|
||||
print $q->hidden(-name=>'c_id',-override=>'1', -value=>"$ctrel->{c_id}");
|
||||
print $q->hidden(-name=>'rel_id',-override=>'1', -value=>"$ctrel->{rel_id}");
|
||||
|
||||
$bg_color = $varenv{background_color2};
|
||||
$edit = "rel_edit";
|
||||
#$relate_key = "relate_dialog4menu";
|
||||
$move_key = "move_dialog4menu" if($node_meta->{tpl_id} == 205);#only Waren
|
||||
#$copy_key = "copy_content";
|
||||
$save_key = "save_content";
|
||||
$edit_template = "$ctrel->{template_id}";
|
||||
$tpl = $db->get_tpl($edit_template);
|
||||
}elsif($node_meta->{ct_table} eq "contentadr" && $node_meta->{tpl_id}){
|
||||
my $ref = {
|
||||
table => "$node_meta->{ct_table}",
|
||||
fetch => "one",
|
||||
template_id => "$node_meta->{tpl_id}",
|
||||
rel_id => "$rel_id",
|
||||
};
|
||||
$ctrel = $dbt->fetch_record($dbh,$ref);
|
||||
print $q->hidden(-name=>'c_id',-override=>'1', -value=>"$ctrel->{c_id}");
|
||||
print $q->hidden(-name=>'rel_id',-override=>'1', -value=>"$ctrel->{rel_id}");
|
||||
|
||||
$bg_color = $varenv{background_color2};
|
||||
$edit = "base_edit";
|
||||
$save_key = "save_adr";
|
||||
$edit_template = "$ctrel->{template_id}" . "000";
|
||||
$tpl = $db->get_tpl($edit_template);
|
||||
}elsif($node_meta->{ct_table} eq "users" && $u_id){
|
||||
my $ref = {
|
||||
table => "$node_meta->{ct_table}",
|
||||
fetch => "one",
|
||||
u_id => "$u_id",
|
||||
};
|
||||
$ctrel = $dbt->fetch_tablerecord($dbh,$ref);
|
||||
print $q->hidden(-name=>'u_id',-override=>'1', -value=>"$ctrel->{u_id}");
|
||||
|
||||
$bg_color = $varenv{background_color2};
|
||||
$edit = "base_edit";
|
||||
$save_key = "save_dmsusers";
|
||||
$tpl = $db->get_tpl($node_meta->{tpl_id});
|
||||
#print Dumper($node_meta->{tpl_id}) . "\n u_id:" . $u_id;
|
||||
}else{
|
||||
print $q->div("Es konnten keine Daten gefunden werden"),"\n";
|
||||
return "failure::Error, no table selected";
|
||||
}
|
||||
|
||||
my $u_name = $dbt->sys_username($dbh,$ctrel->{owner});
|
||||
|
||||
if(ref($ctrel) ne "HASH" && !$ctrel->{c_id} && !$ctrel->{u_id}){
|
||||
print $q->div("error: no content available");
|
||||
}
|
||||
|
||||
$ctrel->{mtime} = $lb->time4de($ctrel->{mtime},"1") if($ctrel->{mtime});
|
||||
my $selsize="200px";
|
||||
#$db->users_up("rel_id4edit",$ctrel->{rel_id},$users_dms->{u_id});
|
||||
|
||||
print $q->hidden(-name=>'parent_id',-override=>'1', -value=>"$node_meta->{parent_id}");
|
||||
print $q->hidden(-name=>'main_id',-override=>'1', -value=>"$node_meta->{main_id}");
|
||||
print $q->hidden(-name=>'template_id',-override=>'1', -value=>"$node_meta->{template_id}");
|
||||
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");
|
||||
|
||||
my ($start_date,$start_time,$s_dd,$s_mo,$s_yy,$s_hh,$s_mi,$end_date,$end_time,$e_yy,$e_mo,$e_dd,$e_hh,$e_mi);
|
||||
my $today = strftime("%d.%m.%Y",localtime(time));
|
||||
my $start_datetime = $ctrel->{start_time};
|
||||
my $end_datetime = $ctrel->{end_time};
|
||||
|
||||
if($start_datetime){
|
||||
($start_date,$start_time) = split(/ /,$start_datetime);
|
||||
($s_yy,$s_mo,$s_dd) = split(/-/,$start_date);
|
||||
$start_date = "$s_dd-$s_mo-$s_yy";
|
||||
($s_hh,$s_mi) = split(/\:/,$start_time);
|
||||
}
|
||||
if($end_datetime){
|
||||
($end_date,$end_time) = split(/ /,$end_datetime);
|
||||
($e_yy,$e_mo,$e_dd) = split(/-/,$end_date);
|
||||
$end_date = "$e_dd-$e_mo-$e_yy";
|
||||
($e_hh,$e_mi) = split(/\:/,$end_time);
|
||||
}
|
||||
###
|
||||
|
||||
my $bike_nodes = {};
|
||||
my $tariff_all = {};
|
||||
if($varenv{systype} eq "sharee"){
|
||||
my $node = { template_id => 205,#Leihrad_liste
|
||||
parent_id => 200013,#Waren
|
||||
fetch => "all",
|
||||
keyfield => "main_id",
|
||||
};
|
||||
$bike_nodes = $dbt->fetch_rel4tpl4nd($dbh,$node);
|
||||
$tariff_all = $db->collect_ct4rel("content","300026",$lang,"","","","","210");
|
||||
}
|
||||
|
||||
print "<div id='Container_cms'>\n";
|
||||
#1. table submit
|
||||
print $q->start_table({-class=>'list', -border=>'0', -width=>'100%',-align=>'center', -cellpadding=>'3', -cellspacing=>'0'});
|
||||
print $q->Tr();
|
||||
print "<td style='background-color:$bg_color;padding:2px;border-bottom: 1px solid silver;'>";
|
||||
print $but->singlesubmit7("$edit","$save_key","$ib{$save_key}","margin:0 5px;");
|
||||
print $but->singlesubmit7("rel_edit","$relate_key","$ib{$relate_key}","margin:0 5px;");
|
||||
print $but->singlesubmit7("rel_edit","$move_key","$ib{$move_key}","margin:0 5px;");
|
||||
print $but->singlesubmit7("rel_edit","$copy_key","$ib{$copy_key}","margin:0 5px;");
|
||||
print $but->singlesubmit7("$edit","remove_chk4rel","$ib{remove_chk4rel}","margin:0 5px;");
|
||||
|
||||
#print $q->div({-style=>'position:fixed;bottom:2%;right:1%;z-index:10;font-size:13px;'}," (c_id: $ctrel->{c_id} | rel_id: $ctrel->{rel_id} | tpl_id: $ctrel->{template_id} / $edit_template)"),"\n" if($users_dms->{u_id} eq $varenv{superu_id});
|
||||
print "</td>\n";
|
||||
print $q->td({-style=>"background-color:$bg_color;padding-right:10px;border-bottom: 1px solid silver;text-align:right;font-size:11px;"}, "$u_name / $ctrel->{mtime}");
|
||||
print $q->end_table;
|
||||
|
||||
|
||||
###Terminal target
|
||||
my $c_key = "c_id";
|
||||
my $add_trans = "add_transpos";
|
||||
if("$node_meta->{ct_table}" =~ /contentadr/){
|
||||
$add_trans = "add_transadr";
|
||||
$c_key = "c_idadr";
|
||||
}
|
||||
|
||||
my $tpath = "";
|
||||
my $top = 70;
|
||||
if($node_meta->{tpl_id} == 202){
|
||||
my $cttrans = $db->collect_ct4rel4nd("contenttrans","","$lang","","","","ct.int10","$ctrel->{c_id}","209,218","","rel_id","");
|
||||
foreach my $id (sort { $cttrans->{$b}->{c_id} <=> $cttrans->{$a}->{c_id} } keys (%$cttrans)){
|
||||
my $toppx = $top . "px";
|
||||
print $q->div({-style=>"position:absolute;top:$toppx;right:20px;"}, " TXID $cttrans->{$id}->{txt16} ",$q->span({-style=>"background-color:$varenv{term_active_color}"},$q->a({-class=>"linknav",-href=>"/$dbt->{shareedms_conf}->{parent_node}/Faktura/$cttrans->{$id}->{node_name}?ct_trans=open\&c_id4trans=$cttrans->{$id}->{c_id}\&tpl_id4trans=$cttrans->{$id}->{template_id}\&kind_of_trans=$users_dms->{kind_of_trans}&owner=$users_dms->{u_id}",-title=>"Faktura Terminal öffnen"},"[ $cttrans->{$id}->{node_name} #$cttrans->{$id}->{ct_name} ]"))),"\n";
|
||||
$top += 22;
|
||||
}
|
||||
}elsif($node_meta->{tpl_id} == 205){
|
||||
my $day = strftime "%d", localtime;
|
||||
my $month = strftime "%m", localtime;
|
||||
my $year = strftime "%Y", localtime;
|
||||
my ($nyear,$nmonth,$nday) = Add_Delta_YMD($year,$month,$day, 0,0,-28);
|
||||
my $toppx = $top . "px";
|
||||
print $q->div({-style=>"position:absolute;top:$toppx;right:20px;"}, $q->span({-style=>"background-color:$varenv{calendar_active_color}"},$q->a({-class=>"linknav",-href=>"/$dbt->{shareedms_conf}->{parent_node}/Mietjournal/?detail_search=1&barcode=$ctrel->{barcode}&start_date_time=$nday.$nmonth.$nyear",-title=>"Mietjournal der letzten 4 Wochen"},"[ Mietjournal zu Rad $dbt->{operator}->{$varenv{dbname}}->{oprefix}$ctrel->{barcode} ]"))),"\n";
|
||||
$top += 22;
|
||||
#}else{
|
||||
#print $q->div({-style=>"position:absolute;top:$top;right:20px;"},"no valid users path definition: $tpath"),"\n";
|
||||
}
|
||||
###
|
||||
|
||||
#just for checking if ct_name or barcode still available
|
||||
if($varenv{orga} eq "dms"){
|
||||
print<<EOF
|
||||
<style>
|
||||
.ui-autocomplete {
|
||||
text-align:left;
|
||||
font-size:14px;
|
||||
background:#eeeeee;
|
||||
border:1px solid silver;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script>
|
||||
\$(function() {
|
||||
|
||||
\$('#json_select').autocomplete({
|
||||
source: '/ajax_json?mandant_id=catch_equal&table=content',
|
||||
minLength: 1,
|
||||
response: function(event, ui) {
|
||||
if (ui.content.length === 0) {
|
||||
\$('#log').text(' neu');
|
||||
}else{
|
||||
\$('#log').text('bereits angelegt!');
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
});
|
||||
</script>
|
||||
EOF
|
||||
;
|
||||
}
|
||||
|
||||
#2. table content
|
||||
print $q->start_table({-border=>'0', -width=>'100%',-align=>'center', -cellpadding=>'3', -cellspacing=>'0'});
|
||||
print "<tr>\n";
|
||||
|
||||
my $j=0;
|
||||
@tpl_order = split /,/,$tpl->{tpl_order};
|
||||
|
||||
#2.1 sub-table
|
||||
print "<td style='border-bottom:1px solid silver;border-right:1px solid silver;vertical-align:top;padding:15px;'>\n";
|
||||
print $q->start_table({-border=>'0', -width=>'100%',-align=>'center', -cellpadding=>'3', -cellspacing=>'0'});
|
||||
$j++;
|
||||
my @_service_valxx = ("","1","2","3","4");
|
||||
|
||||
foreach (@tpl_order){
|
||||
my ($key,$des,$size,$postdes) = split /=/,$_;
|
||||
my $seldes = $des;
|
||||
$des .= " ($key)" if($users_dms->{u_id} eq $varenv{superu_id});
|
||||
|
||||
$ctrel->{$key} = $q->unescapeHTML("$ctrel->{$key}");
|
||||
$ctrel->{$key} = $lb->newline($ctrel->{$key},"",1);
|
||||
if($key =~ /c_id|ct_name|barcode|txt/ && $size eq "readonly"){
|
||||
print $q->Tr();
|
||||
print $q->td({-class=>'left_italic_cms'},"$des"),"\n";
|
||||
print $q->td({-class=>'content1_cms',-colspan=>2},$q->textfield(-class=>'etxt', -style=>"width:15em;",-name=>"$key", -default=>"$ctrel->{$key}", -readonly=>1)),"\n";
|
||||
}elsif($key eq "u_id" && $size eq "readonly"){
|
||||
my $adref = {
|
||||
table => "contentadr",
|
||||
fetch => "one",
|
||||
template_id => "202",
|
||||
c_id => "$ctrel->{$key}",
|
||||
};
|
||||
my $ctadr = $dbt->fetch_record($dbh,$adref);
|
||||
|
||||
print $q->Tr();
|
||||
print $q->td({-class=>'left_italic_cms'},"ID"),"\n";
|
||||
print $q->td({-class=>'content1_cms',-colspan=>2},$q->textfield(-class=>'etxt', -style=>"width:15em;",-name=>"$key", -default=>"$ctrel->{$key}", -readonly=>1)),"\n";
|
||||
print $q->Tr();
|
||||
print $q->td({-class=>'left_italic_cms'},"Vorname Name"),"\n";
|
||||
print $q->td({-class=>'content1_cms',-colspan=>2},$q->textfield(-class=>'etxt', -style=>"width:15em;",-name=>"", -default=>"$ctadr->{txt01}", -readonly=>1)),"\n";
|
||||
print $q->Tr();
|
||||
print $q->td({-class=>'left_italic_cms'},"eMail (Login)"),"\n";
|
||||
print $q->td({-class=>'content1_cms',-colspan=>2},$q->textfield(-class=>'etxt', -style=>"width:15em;",-name=>"", -default=>"$ctadr->{txt08}", -readonly=>1)),"\n";
|
||||
|
||||
}elsif($key eq "ct_name"){
|
||||
#blank Teilenummer
|
||||
my $ct_name = $ctrel->{$key};
|
||||
if(($node_meta->{ct_table} eq "content") && ($tpl->{tpl_order} =~ /barcode/) && ("$ct_name" eq "$ctrel->{barcode}")){
|
||||
$ct_name = "";
|
||||
}
|
||||
my $w = $size . "em";
|
||||
my $oprefix = "";
|
||||
$oprefix = "$dbt->{operator}->{$varenv{dbname}}->{oprefix}-" if($node_meta->{tpl_id} == 224 || $node_meta->{tpl_id} == 228);
|
||||
print $q->Tr();
|
||||
print $q->td({-class=>'left_italic_cms'},"$des"),"\n";
|
||||
print $q->td({-class=>'content1_cms',-colspan=>2}, "$oprefix", $q->textfield(-class=>'etxt', -style=>"width:$w;",-name=>"$key", -override=>'1',-default=>"$ct_name")),"\n";
|
||||
}
|
||||
elsif($key eq "barcode"){
|
||||
my $w = $size . "em";
|
||||
my $oprefix = "";
|
||||
$oprefix = "$dbt->{operator}->{$varenv{dbname}}->{oprefix}" if($node_meta->{tpl_id} == 205);
|
||||
print $q->Tr();
|
||||
print $q->td({-class=>'left_italic_cms'},"$des"),"\n";
|
||||
print $q->td({-class=>'content1_cms',-colspan=>1}, "$oprefix", $q->textfield(-class=>'etxt',-style=>"width:$w;",-id=>"json_select",-name=>"$key",-value=>"$ctrel->{$key}", -override=>'1',-size=>"25",-maxlength=>50),"");
|
||||
print $q->td({-class=>'content1_cms',-id=>'log'},""),"\n";
|
||||
}
|
||||
elsif($key =~ /int/ && $size =~ /\w\+\w/ && $postdes eq "reverse"){
|
||||
my ($a,$b) = split /\+/,$size;
|
||||
print $q->Tr();
|
||||
print $q->td({-class=>'left_italic_cms'},"$des"),"\n";
|
||||
print $q->td({-class=>'content1_cms',-colspan=>1},$but->radiobox2reverse("$key","$ctrel->{$key}","$a","$b")),"\n";
|
||||
}
|
||||
elsif($key =~ /int/ && $size =~ /\w\+\w/){
|
||||
#if($users_dms->{u_id} eq $varenv{superu_id} || $des !~ /DMS/){#only superu_id can acivate DMS-Admin
|
||||
if($users_dms->{u_id}){
|
||||
my ($a,$b,$c) = split /\+/,$size;
|
||||
print $q->Tr();
|
||||
print $q->td({-class=>'left_italic_cms'},"$des"),"\n";
|
||||
print $q->td({-class=>'content1_cms',-colspan=>1},$but->radiobox2("$key","$ctrel->{$key}","$a","$b","$c")),"\n";
|
||||
}
|
||||
}
|
||||
elsif($key =~ /int/ && $size =~ /checkbox/){
|
||||
print $q->Tr();
|
||||
print $q->td({-class=>'left_italic_cms'},"$des"),"\n";
|
||||
print $q->td({-class=>'content1_cms', -colspan=>'1'}, $but->checkbox("1","$key","$ctrel->{$key}"), $postdes),"\n";
|
||||
print $q->hidden(-name=>"$key",-override=>1,-value=>"null");
|
||||
}
|
||||
elsif($key eq "int04"){
|
||||
my $w = $size . "em";
|
||||
my $oprefix = "";
|
||||
$oprefix = "$dbt->{operator}->{$varenv{dbname}}->{oprefix}" if($node_meta->{tpl_id} == 225 || $node_meta->{tpl_id} == 205);
|
||||
print $q->Tr();
|
||||
print $q->td({-class=>'left_italic_cms'},"$des"),"\n";
|
||||
print $q->td({-class=>'content1_cms',-colspan=>1}, "$oprefix", $q->textfield(-class=>'etxt',-style=>"width:$w;",-name=>"$key",-value=>"$ctrel->{$key}", -override=>'1',-size=>"25",-maxlength=>50),"");
|
||||
}
|
||||
elsif($key =~ /int12/ && "$size" eq "select" && $node_meta->{tpl_id} == 210){#Flotte bike_group (bikenode.main_id)
|
||||
my @_valxx = ("");
|
||||
foreach my $rid (sort { $bike_nodes->{$a}->{node_name} cmp $bike_nodes->{$b}->{node_name} } keys (%$bike_nodes)){
|
||||
push (@_valxx, "$bike_nodes->{$rid}->{main_id}:$bike_nodes->{$rid}->{node_name} - $bike_nodes->{$rid}->{main_id}");
|
||||
}
|
||||
print $q->Tr();
|
||||
print $q->td({-class=>'left_italic_cms',-colspan=>'1'},"$des");
|
||||
print $q->td({-class=>'content1_cms',-colspan=>'1'},$but->selector_class("$key","eselect","width:250px;",$ctrel->{$key},@_valxx));
|
||||
}
|
||||
|
||||
elsif($key =~ /int21|int22/ && "$size" eq "select" && $node_meta->{tpl_id} == 228){#Bonus Tarif
|
||||
my @_valxx = ("");
|
||||
foreach my $rid (sort { $tariff_all->{$a}->{barcode} <=> $tariff_all->{$b}->{barcode} } keys (%$tariff_all)){
|
||||
push (@_valxx, "$tariff_all->{$rid}->{barcode}:$tariff_all->{$rid}->{barcode} - $tariff_all->{$rid}->{txt01}");
|
||||
}
|
||||
print $q->Tr();
|
||||
print $q->td({-class=>'left_italic_cms',-colspan=>'1'},"$des");
|
||||
print $q->td({-class=>'content1_cms',-colspan=>'1'},$but->selector_class("$key","eselect","width:350px;",$ctrel->{$key},@_valxx));
|
||||
}
|
||||
elsif($key =~ /int07/ && "$size" eq "select" && $node_meta->{tpl_id} == 225){#Station Service Tour
|
||||
my $selsize="50px";
|
||||
print $q->Tr();
|
||||
print $q->td({-class=>'left_italic_cms'},"$des"),"\n";
|
||||
print $q->td({-class=>'content1_cms',-colspan=>'2'},$but->selector("$key","$selsize",$ctrel->{$key},@_service_valxx));
|
||||
}
|
||||
elsif($key =~ /int10/ && "$size" eq "select" && ($node_meta->{tpl_id} == 205 || $node_meta->{tpl_id} == 225)){#bike_state
|
||||
my @_lock_valxx = ();
|
||||
while (my ($key, $value) = each %{ $dbt->{copri_conf}->{bike_state} }) {
|
||||
push @_lock_valxx, "$key:$value";#[1:available] ...
|
||||
}
|
||||
print $q->Tr();
|
||||
print $q->td({-class=>'left_italic_cms'},"$des"),"\n";
|
||||
print $q->td({-class=>'content1_cms',-colspan=>'2'},$but->selector_class("$key","eselect","",$ctrel->{$key},@_lock_valxx));
|
||||
}
|
||||
elsif($key =~ /int18/ && "$size" eq "select" && $node_meta->{tpl_id} == 210){#sharing_type
|
||||
my @_lock_valxx = ();
|
||||
while (my ($key, $value) = each %{ $dbt->{copri_conf}->{sharing_type} }) {
|
||||
push @_lock_valxx, "$key:$value";#[0:private] ...
|
||||
}
|
||||
print $q->Tr();
|
||||
print $q->td({-class=>'left_italic_cms'},"$des"),"\n";
|
||||
print $q->td({-class=>'content1_cms',-colspan=>'2'},$but->selector_class("$key","eselect","",$ctrel->{$key},@_lock_valxx));
|
||||
}
|
||||
elsif($key =~ /int20/ && "$size" eq "select" && $node_meta->{tpl_id} == 205){#lock_state locked/unlocked
|
||||
my @_lock_valxx = ();
|
||||
while (my ($key, $value) = each %{ $dbt->{copri_conf}->{lock_state} }) {
|
||||
push @_lock_valxx, "$key:$value";#[2:unlocked]
|
||||
}
|
||||
print $q->Tr();
|
||||
print $q->td({-class=>'left_italic_cms'},"$des"),"\n";
|
||||
print $q->td({-class=>'content1_cms',-colspan=>'2'},$but->selector_class("$key","eselect","",$ctrel->{$key},@_lock_valxx));
|
||||
}
|
||||
elsif($key =~ /int11/ && "$size" eq "select" && $node_meta->{tpl_id} == 205){#lock_system BC Ilockit usw
|
||||
my @_lock_valxx = ();
|
||||
while (my ($key, $value) = each %{ $dbt->{copri_conf}->{lock_system} }) {
|
||||
push @_lock_valxx, "$key:$value";#[2:Ilockit]
|
||||
}
|
||||
print $q->Tr();
|
||||
print $q->td({-class=>'left_italic_cms'},"$des"),"\n";
|
||||
print $q->td({-class=>'content1_cms',-colspan=>'2'},$but->selector_class("$key","eselect","",$ctrel->{$key},@_lock_valxx));
|
||||
}
|
||||
elsif($key =~ /int/ && "$size" eq "select"){
|
||||
my @_valxx;
|
||||
my $selsize="50px";
|
||||
|
||||
@_valxx = split(/\|/,$varenv{$seldes});
|
||||
$ctrel->{$key} =~ s/\.00//;
|
||||
print $q->Tr();
|
||||
print $q->td({-class=>'left_italic_cms'},"$des"),"\n";
|
||||
print $q->td({-class=>'content1_cms',-colspan=>'2'},$but->selector("$key","$selsize",$ctrel->{$key},@_valxx));
|
||||
}
|
||||
elsif($key =~ /int/){
|
||||
my $w = $size . "em";
|
||||
print $q->Tr();
|
||||
print $q->td({-class=>'left_italic_cms'},"$des"),"\n";
|
||||
print $q->td({-class=>'content1_cms',-colspan=>2},$q->textfield(-class=>'etxt', -style=>"width:$w;",-name=>"$key", -override=>'1', -default=>"$ctrel->{$key}"), $postdes),"\n";
|
||||
}
|
||||
elsif($key =~ /txt/ && "$size" eq "select" && "$des" =~ /Status|PiQuest|Zahlungsweise/){
|
||||
my @_valxx;
|
||||
my $selsize="150px";
|
||||
@_valxx = split(/\|/,$varenv{$seldes}) if($varenv{$seldes});
|
||||
print $q->Tr();
|
||||
print $q->td({-class=>'left_italic_cms'},"$des"),"\n";
|
||||
if($des eq "PiQuest"){
|
||||
print $q->td({-class=>'content1_cms',-colspan=>'2'},$but->selector("$key","$selsize","",@_valxx)," $ctrel->{$key}");
|
||||
}else{
|
||||
print $q->td({-class=>'content1_cms',-colspan=>'2'},$but->selector("$key","$selsize",$ctrel->{$key},@_valxx));
|
||||
}
|
||||
}
|
||||
elsif($key =~ /txt/ && "$size" eq "select" && "$des" =~ /System|Ziel Datei/){
|
||||
my @_valxx;
|
||||
my $selsize="150px";
|
||||
@_valxx = split(/\|/,$varenv{$seldes}) if($varenv{$seldes});
|
||||
print $q->Tr();
|
||||
print $q->td({-class=>'left_italic_cms'},"$des"),"\n";
|
||||
print $q->td({-class=>'content1_cms',-colspan=>'2'},$but->selector("$key","$selsize",$ctrel->{$key},@_valxx));
|
||||
}
|
||||
elsif($key =~ /txt/ && "$size" eq "select" && "$des" =~ /Land/){
|
||||
my @_valxx;
|
||||
my $selsize="150px";
|
||||
my $country = $lb->country_code();
|
||||
$ctrel->{$key} = "DE" if(!$ctrel->{$key});
|
||||
foreach (sort { $country->{$a} cmp $country->{$b} } keys (%$country)){
|
||||
push @_valxx, "$_:$country->{$_}";
|
||||
}
|
||||
print $q->Tr();
|
||||
print $q->td({-class=>'left_italic_cms'},"$des"),"\n";
|
||||
print $q->td({-class=>'content1_cms',-colspan=>'2'},$but->selector("$key","$selsize",$ctrel->{$key},@_valxx));
|
||||
}
|
||||
elsif($node_meta->{tpl_id} == 205 && $key =~ /txt23/ && "$size" =~ /select/){#Service-Farbcode
|
||||
my @_valxx = ("red","blue","green");
|
||||
my @service_code = ("red","red","red","red","red","red");
|
||||
@service_code = split(/\s/,$ctrel->{$key}) if($ctrel->{$key} =~ /\w+\s\w+\s\w+\s\w+\s\w+\s\w+/g);
|
||||
print $q->Tr();
|
||||
print $q->td({-class=>'left_italic_cms',-style=>'vertical-align:top;',-colspan=>'1'},"$des");
|
||||
print "<td class='content1_cms' colspan='1'>\n";
|
||||
foreach(@service_code){
|
||||
print $but->selector_color("$key","color:white;background-color:$_;width:60px;",$_,@_valxx);
|
||||
}
|
||||
print "</td>\n";
|
||||
}
|
||||
elsif($key =~ /txt/ && "$size" =~ /select/){
|
||||
if($size =~ /_multiple/){
|
||||
if($key =~ /txt18/ && $node_meta->{tpl_id} eq "202"){ #service_tour alias user_tour
|
||||
my $height = scalar(@_service_valxx);
|
||||
print $q->Tr();
|
||||
print $q->td({-class=>'left_italic_cms',-style=>'vertical-align:top;',-colspan=>'1'},"$des");
|
||||
print $q->td({-class=>'content1_cms',-colspan=>'1'},$but->selector2("$key","50px;","$height",$ctrel->{$key},@_service_valxx));
|
||||
}
|
||||
elsif($key =~ /txt24/ && $node_meta->{tpl_id} == 225){ #sharee station_group (bikenode.main_ids)
|
||||
my @_valxx = ("");
|
||||
foreach my $rid (sort { $bike_nodes->{$a}->{node_name} cmp $bike_nodes->{$b}->{node_name} } keys (%$bike_nodes)){
|
||||
push (@_valxx, "$bike_nodes->{$rid}->{main_id}:$bike_nodes->{$rid}->{node_name} - $bike_nodes->{$rid}->{main_id}");
|
||||
}
|
||||
my $height = scalar(@_valxx);
|
||||
print $q->Tr();
|
||||
print $q->td({-class=>'left_italic_cms',-style=>'vertical-align:top;',-colspan=>'1'},"$des");
|
||||
print $q->td({-class=>'content1_cms',-colspan=>'1'},$but->selector2("$key","250px;","$height",$ctrel->{$key},@_valxx));
|
||||
}
|
||||
#sharee user_group Tarif-2.0 (tarif.c_ids)
|
||||
elsif($key =~ /txt30/ && $varenv{dbname} ne "sharee_primary"){
|
||||
my @_valxx = ("");
|
||||
foreach my $rid (sort { $tariff_all->{$a}->{barcode} <=> $tariff_all->{$b}->{barcode} } keys (%$tariff_all)){
|
||||
if($tariff_all->{$rid}->{ct_name}){
|
||||
push (@_valxx, "$tariff_all->{$rid}->{barcode}:$tariff_all->{$rid}->{barcode} - $tariff_all->{$rid}->{txt01} - $tariff_all->{$rid}->{int12}");
|
||||
}
|
||||
}
|
||||
my $height = scalar(@_valxx);
|
||||
print $q->Tr();
|
||||
print $q->td({-class=>'left_italic_cms',-style=>'vertical-align:top;',-colspan=>'1'},"$des");
|
||||
print $q->td({-class=>'content1_cms',-colspan=>'1'},$but->selector2("$key","350px;","$height",$ctrel->{$key},@_valxx));
|
||||
}
|
||||
}else{
|
||||
my @_valxx = ("");
|
||||
@_valxx = split(/,/,$varenv{$seldes}) if($varenv{$seldes});
|
||||
my $selsize = "80px";
|
||||
print $q->Tr();
|
||||
print $q->td({-class=>'left_italic_cms'},"$des"),"\n";
|
||||
print $q->td({-class=>'content1_cms',-colspan=>'2'},$but->selector("$key","$selsize",$ctrel->{$key},@_valxx));
|
||||
}
|
||||
#print $q->hidden(-name=>"$key",-override=>1,-value=>"null");#2021-06-02 select works without empty null
|
||||
}
|
||||
elsif($key =~ /txt/ && $size =~ /area$/){
|
||||
my $h= 1;# if($size =~ /area(\d+)/);
|
||||
print $q->Tr();
|
||||
print $q->td({-class=>'left_italic_cms',-colspan=>1},"$des"),"\n";
|
||||
print $q->td({-class=>'content1_cms', -colspan=>'3'},$q->textarea(-class=>"autos", -style=>'border: 1px solid silver;background-color:#ededed;',-rows=>"$h",-cols=>'35em;', -name=>"$key", -override=>'1',-default=>"$ctrel->{$key}")),"\n";
|
||||
}
|
||||
elsif($key =~ /txt/ && $size =~ /area(\d+)/){
|
||||
#my $h= $1 if($size =~ /area(\d+)/);
|
||||
my $h= "height:" . $1 . "em;";
|
||||
my $w = "width:25em;";
|
||||
$w= "width:" . $2 . "em;" if($size =~ /area(\d+)-(\d+)/);
|
||||
print $q->Tr();
|
||||
print $q->td({-style=>'padding:4px 0 0 0px;',-colspan=>1},""),"\n";
|
||||
print $q->td({-style=>'padding:4px 0 0 0px;',-colspan=>3},"$des"),"\n";
|
||||
print $q->Tr();
|
||||
print $q->td({-style=>'padding:4px 0 0 0px;',-colspan=>1},""),"\n";
|
||||
if($key eq "txt28" && $ctrel->{$key} =~ /SEPA-Lastschriftmandat/){
|
||||
use URI::Encode qw(uri_encode uri_decode);
|
||||
$ctrel->{txt28} = uri_decode($ctrel->{txt28});
|
||||
$ctrel->{txt28} =~ s/\+/ /g;
|
||||
print $q->td({-style=>'border:1px solid silver;'},$ctrel->{txt28}),"\n";
|
||||
}else{
|
||||
print $q->td({-class=>'content1_cms', -colspan=>'3'},$q->textarea(-id=>"$key", -class=>"autos", -style=>"border: 1px solid silver;background-color:#ededed;$h $w", -name=>"$key", -override=>'1',-default=>"$ctrel->{$key}")),"\n";
|
||||
}
|
||||
}
|
||||
elsif($key =~ /txt02/ && $varenv{syshost} =~ /sharee/){
|
||||
#nothing txt02=Datei aktiv=10=sharee-APP aktivierte Dokument
|
||||
}
|
||||
elsif($key =~ /txt15/ && $varenv{syshost} =~ /sharee/ && $node_meta->{tpl_id} == 202){
|
||||
my $w = $size . "em";
|
||||
my $record_bonus = {c_id => 0};
|
||||
my $pref_cc = {
|
||||
table => "content",
|
||||
fetch => "one",
|
||||
template_id => "228",
|
||||
ct_name => "$ctrel->{txt15}",
|
||||
};
|
||||
$record_bonus = $dbt->fetch_record($dbh,$pref_cc);
|
||||
|
||||
my @tariff = ("$ctrel->{txt30}");
|
||||
@tariff = split(/\s/,$ctrel->{txt30}) if($ctrel->{txt30} =~ /\s/);
|
||||
foreach my $tf_id (@tariff){
|
||||
$tf_id =~ s/\s//g;
|
||||
#print "$record_bonus->{int22} == $tf_id<br>";
|
||||
if($record_bonus->{int22} == $tf_id){
|
||||
$postdes = "Tarif: $record_bonus->{int21} - $record_bonus->{int22} (public - bonus)";
|
||||
$postdes .= $q->span({-style=>'color:red;padding-left:10px;'},"Fehler: Bonusnummer") if(!$ctrel->{$key});
|
||||
}
|
||||
}
|
||||
print $q->Tr();
|
||||
print $q->td({-class=>'left_italic_cms'},"$des"),"\n";
|
||||
print $q->td({-class=>'content1_cms',-colspan=>'2'},$q->textfield(-class=>'etxt', -style=>"width:$w;",-name=>"$key", -override=>'1', -default=>"$ctrel->{$key}"), $postdes),"\n";
|
||||
}
|
||||
#Operators or Operators Antrag
|
||||
elsif($key =~ /txt17|txt19/){
|
||||
if($varenv{dbname} eq "sharee_primary"){
|
||||
my $w = $size . "em";
|
||||
print $q->Tr();
|
||||
print $q->td({-class=>'left_italic_cms'},"$des"),"\n";
|
||||
print $q->td({-class=>'content1_cms',-colspan=>'2'},$q->textfield(-class=>'etxt', -style=>"width:$w;",-name=>"$key", -override=>'1', -default=>"$ctrel->{$key}"), $postdes),"\n";
|
||||
}
|
||||
}
|
||||
elsif($key =~ /txt/){
|
||||
my $w = $size . "em";
|
||||
print $q->Tr();
|
||||
print $q->td({-class=>'left_italic_cms'},"$des"),"\n";
|
||||
print $q->td({-class=>'content1_cms',-colspan=>'2'},$q->textfield(-class=>'etxt', -style=>"width:$w;",-name=>"$key", -override=>'1', -default=>"$ctrel->{$key}"), $postdes),"\n";
|
||||
}
|
||||
elsif($key =~ /byte/){
|
||||
my $K_int = unpack "H*", $ctrel->{$key};
|
||||
#$K_int =~ s/(.)/sprintf( "%x", ord($1))/eg;
|
||||
my $w = $size . "em";
|
||||
print $q->Tr();
|
||||
print $q->td({-class=>'left_italic_cms',-colspan=>1},"$des"),"\n";
|
||||
print $q->td({-class=>'content1_cms',-colspan=>'2'},$q->textfield(-class=>'etxt', -style=>"width:$w;",-name=>"$key", -override=>'1', -default=>"$K_int"), $postdes),"\n";
|
||||
|
||||
}
|
||||
|
||||
if($key =~ /date_time/){
|
||||
#print $q->hidden(-name=>'t_id', -override=>'1',-value=>"$times_id");
|
||||
print $q->Tr();
|
||||
print $q->td({-class=>'left_italic_cms'},"Datum Start"),"\n";
|
||||
print $q->td({-class=>'content1_cms', -colspan=>'1'},$q->textfield(-id=>'datepicker1',-class=>'etxt',-name=>"start_date",-default=>"$start_date",-override=>'1',-size=>"10",-maxlength=>10)),"\n";
|
||||
print $q->td({-class=>'content1_cms', -colspan=>'1'},"Ende", $q->textfield(-id=>'datepicker2',-class=>'etxt',-name=>"end_date",-default=>"$end_date",-override=>'1',-size=>"10",-maxlength=>10)),"\n";
|
||||
print $q->Tr();
|
||||
print $q->td({-class=>'left_italic_cms'},"Uhrzeit Start"),"\n";
|
||||
print $q->td({-class=>'content1_cms',-colspan=>'1'},
|
||||
$q->textfield(-class=>'etxt',-name=>"s_hh", -override=>'1',-default=>"$s_hh",-size=>"2",-maxlength=>2),":",
|
||||
$q->textfield(-class=>'etxt',-name=>"s_mi", -override=>'1',-default=>"$s_mi",-size=>"2",-maxlength=>2)),"\n";
|
||||
print $q->td({-class=>'content1_cms',-colspan=>'1'},"Ende",
|
||||
$q->textfield(-class=>'etxt',-name=>"e_hh", -override=>'1',-default=>"$e_hh",-size=>"2",-maxlength=>2),":",
|
||||
$q->textfield(-class=>'etxt',-name=>"e_mi", -override=>'1',-default=>"$e_mi",-size=>"2",-maxlength=>2)),"\n";
|
||||
}
|
||||
}
|
||||
print $q->end_table;
|
||||
print "</td>\n";
|
||||
print "</tr>\n";
|
||||
|
||||
print $q->end_table;
|
||||
#2.table ende
|
||||
|
||||
print $q->div($but->singlesubmit7("$edit","$save_key","$ib{$save_key}","margin:10px 20px;")),"\n";
|
||||
my $debug = "";
|
||||
#$debug = "(ct_table: $node_meta->{ct_table} | main_id: $node_meta->{main_id} | c_id: $ctrel->{c_id} | tpl_id: $tpl->{tpl_id} | rel_id: $ctrel->{rel_id})";
|
||||
print $q->div({-style=>'z-index:10;font-size:13px;'},"$debug"),"\n" if($users_dms->{u_id} eq $varenv{superu_id});
|
||||
|
||||
print "</div>";
|
||||
}
|
||||
1;
|
467
copri4/main/src/Tpl/Calorin.pm
Normal file
467
copri4/main/src/Tpl/Calorin.pm
Normal file
|
@ -0,0 +1,467 @@
|
|||
package Calorin;
|
||||
#
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
# Copyright (c) Rainer Gümpelein, TeilRad GmbH
|
||||
#
|
||||
use strict;
|
||||
use warnings;
|
||||
use POSIX;
|
||||
use CGI;
|
||||
use CGI::Carp qw(fatalsToBrowser);
|
||||
use CGI ':standard';
|
||||
use Calendar::Simple;
|
||||
use Date::Calc qw(:all);
|
||||
use Lib::Config;
|
||||
use Mod::Buttons;
|
||||
use Mod::Libenz;
|
||||
use Mod::Callib;
|
||||
use Mod::Libenzdb;
|
||||
use Mod::DBtank;
|
||||
use Mod::APIfunc;
|
||||
use Mod::Pricing;
|
||||
use Data::Dumper;
|
||||
|
||||
sub new {
|
||||
my $class = shift;
|
||||
my $self = {};
|
||||
bless($self,$class);
|
||||
return $self;
|
||||
}
|
||||
|
||||
#Template
|
||||
sub tpl(){
|
||||
my ($node_meta,$users_dms,$u_group,$return) = @_;
|
||||
my $q = new CGI;
|
||||
my $cf = new Config;
|
||||
my $lb = new Libenz;
|
||||
my $but = new Buttons;
|
||||
my $cb = new Callib;
|
||||
my $db = new Libenzdb;
|
||||
my $apif = new APIfunc;
|
||||
my $dbt = new DBtank;
|
||||
my $pri = new Pricing;
|
||||
|
||||
my $lang = "de";
|
||||
#my $rel = $db->get_relation($main_id,$lang);
|
||||
my $tpl = $db->get_tpl($node_meta->{template_id});
|
||||
my @tpl_order = split /,/,$tpl->{tpl_order};
|
||||
my %varenv = $cf->envonline();
|
||||
my %ib = $but->ibuttons();
|
||||
my $script = $q->script_name();
|
||||
my $path_info = $q->path_info();
|
||||
my $path = $path_info;
|
||||
#with meta_host,
|
||||
if("$varenv{metahost}"){
|
||||
$path = "$script" . "$path_info";
|
||||
$script="";
|
||||
}
|
||||
|
||||
$path =~ s/\/user|\/manager|\/admin//;
|
||||
my $now_time = strftime "%Y-%m-%d %H:%M", localtime;
|
||||
|
||||
my $table = "contenttrans";
|
||||
my $u_name = $q->escapeHTML("$R::u_name");
|
||||
my $ctf = $db->get_content1("contentuser",$dbt->{shareedms_conf}->{parent_id});
|
||||
my $dbh = "";
|
||||
|
||||
my $channel_map = $dbt->channel_map();
|
||||
my $mapref = {};
|
||||
my $ct_users = $dbt->users_map($dbh,$mapref);#get serviceAPP and DMS users from contentadr
|
||||
|
||||
my @_users = (":user");
|
||||
foreach my $id (sort { $channel_map->{$a} cmp $channel_map->{$b} } keys (%$channel_map)){
|
||||
push (@_users, "$id:$channel_map->{$id}");
|
||||
if($channel_map->{$id} eq $R::s_owner){
|
||||
#$searchref->{owner} = $id;
|
||||
#$s_u_name = $channel_map->{$id};
|
||||
}
|
||||
}
|
||||
|
||||
if(1==1){
|
||||
foreach my $ctu_id (sort { $ct_users->{$a}->{txt01} cmp $ct_users->{$b}->{txt01} } keys (%$ct_users)){
|
||||
push (@_users, "$ct_users->{$ctu_id}->{c_id}:$ct_users->{$ctu_id}->{txt01}");
|
||||
if($ct_users->{$ctu_id}->{ct_name} && ($ct_users->{$ctu_id}->{txt01} =~ /$R::s_owner/i)){
|
||||
#$searchref->{owner} = $ct_users->{$ctu_id}->{c_id};
|
||||
#$s_u_name = $ct_users->{$ctu_id}->{txt01};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
my $bnode = { template_id => 205,#Leihrad_liste
|
||||
parent_id => 200013,#Waren
|
||||
fetch => "all",
|
||||
keyfield => "main_id",
|
||||
};
|
||||
my $bike_nodes = $dbt->fetch_rel4tpl4nd($dbh,$bnode);
|
||||
|
||||
my $root_id = 100;
|
||||
#alle nicht abgeschlossene mandanten-einträge ....
|
||||
my $x_main_ids = "$root_id,";
|
||||
my $tplids = "$node_meta->{template_id},";
|
||||
$tplids .= "$ctf->{txt34}," if($ctf->{txt34});
|
||||
$tplids .= "$ctf->{txt35}," if($ctf->{txt35});
|
||||
$tplids .= "$ctf->{txt36}," if($ctf->{txt36});
|
||||
|
||||
#sollte ins ctf-System. Verkaufliste,Verleihliste
|
||||
#incl. Verkauf/Verleih journal
|
||||
$tplids .= "204,207,218,209";
|
||||
$tplids =~ s/,$//;
|
||||
|
||||
$x_main_ids .= $db->collect_noderec($root_id,$lang,"nothing");
|
||||
$x_main_ids =~ s/,$//;
|
||||
my $ct4rel = $db->collect_ct4rel4nd($table,"$x_main_ids","$lang","","","","","","$tplids","","c_id","");
|
||||
my @months = $cb->monthmap();
|
||||
|
||||
my $hh;my $mm;
|
||||
my $day = strftime "%d", localtime;
|
||||
my $day_today = $day;
|
||||
my $mon = strftime "%m", localtime;
|
||||
my $mon_today = $mon;
|
||||
my $year = strftime "%Y", localtime;
|
||||
my $year_today = $year;
|
||||
($year,$mon,$day,$hh,$mm) = $lb->split_date($users_dms->{cal_start}) if($users_dms->{cal_start});
|
||||
|
||||
print $q->end_form;
|
||||
print $q->start_form();
|
||||
|
||||
print "<div id='Content4list' style='font-size:0.91em;min-width:1300px;'>\n";
|
||||
|
||||
my $start_date_time = $R::start_date_time;
|
||||
my $end_date_time = $R::end_date_time;
|
||||
|
||||
$start_date_time = "01.$mon.$year" if(!$start_date_time);
|
||||
|
||||
|
||||
my $c_date; my $start_chck=0;my $end_chck=0;my $message;
|
||||
if($start_date_time){
|
||||
($start_date_time,$start_chck) = $lb->checkdate($start_date_time) if($start_date_time ne "%");
|
||||
print $q->div({-style=>'background-color:white;color:red;'},"→ Datum Eingabefehler: $start_date_time <<<") if($end_chck);
|
||||
}
|
||||
if($end_date_time){
|
||||
($end_date_time,$end_chck) = $lb->checkdate($end_date_time) if($end_date_time ne "%");
|
||||
print $q->div({-style=>'background-color:white;color:red;'},"→ Datum Eingabefehler: $end_date_time <<<") if($end_chck);
|
||||
}
|
||||
|
||||
if(!$end_date_time){
|
||||
my $days4month = Days_in_Month($year,$mon);
|
||||
$end_date_time = "$days4month.$mon.$year";
|
||||
$end_date_time = $cb->datetime_defaults($end_date_time,"dummy",$lang);
|
||||
}
|
||||
|
||||
|
||||
my $limit = $R::limit || $varenv{limit} * 2;#max. 160 * 2
|
||||
my $offset = $R::offset || "0";
|
||||
if($R::detail_search){
|
||||
$limit = 10000;
|
||||
$offset = 0;
|
||||
}
|
||||
#backward | forward
|
||||
if($R::go eq "backward_list"){
|
||||
$offset -= $limit if($offset >= $limit);
|
||||
}elsif($R::go eq "forward_list"){
|
||||
$offset += $limit;
|
||||
}
|
||||
|
||||
my $cttpos;
|
||||
$R::ct_ct_name =~ s/\#//;
|
||||
my $search = {
|
||||
#table => "contenttranspos",
|
||||
table => "$node_meta->{ct_table}",
|
||||
cttpos_id => $q->escapeHTML("$R::cttpos_id"),
|
||||
txt06 => $q->escapeHTML("$R::txt06"),
|
||||
txt08 => $q->escapeHTML("$R::txt08"),
|
||||
int04 => $q->escapeHTML("$R::int04"),
|
||||
int06 => $q->escapeHTML("$R::int06"),
|
||||
int12 => $q->escapeHTML("$R::int12"),
|
||||
int13 => $q->escapeHTML("$R::int13"),
|
||||
cp_ct_name => $q->escapeHTML("$R::cp_ct_name"),
|
||||
int10 => $q->escapeHTML("$R::int10"),
|
||||
int20 => $q->escapeHTML("$R::int20"),
|
||||
barcode => $q->escapeHTML("$R::barcode"),
|
||||
ct_txt06 => $q->escapeHTML("$R::ct_txt06"),#PLZ
|
||||
ct_ct_name => $q->escapeHTML("$R::ct_ct_name"),
|
||||
owner => $q->escapeHTML("$R::owner"),
|
||||
limit => $q->escapeHTML($limit),
|
||||
offset => $q->escapeHTML($offset),
|
||||
cal_sort_updown => $users_dms->{cal_sort_updown},
|
||||
};
|
||||
$search = { %$search,
|
||||
start_date_time => "$start_date_time",
|
||||
end_date_time => "$end_date_time",
|
||||
} if(!$R::cttpos_id);
|
||||
|
||||
if(!$start_chck && !$end_chck){
|
||||
if($node_meta->{ct_table} eq "contenttranspos"){
|
||||
$cttpos = $dbt->collect_transpos($dbh,$search);
|
||||
}elsif($node_meta->{ct_table} eq "contenttheftpos"){
|
||||
$cttpos = $dbt->collect_theftpos($dbh,$search);
|
||||
}
|
||||
}
|
||||
|
||||
#2019-05-09 collect content to get content.txt10 for Räder Status
|
||||
my $tpl_id_ware = "205";
|
||||
my $ct4rel_ware = {};
|
||||
$ct4rel_ware = $db->collect_cid("content",$lang,$tpl_id_ware,"","","","");
|
||||
|
||||
my $header_style = "";
|
||||
$header_style = "border:2px solid #9f1f0e;" if($message);
|
||||
print $q->div({-class=>"copri_header",-style=>"background-color:$tpl->{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"}," ← "),
|
||||
$q->a({-class=>"linknav",-style=>"padding:0 0.5em;",-title=>"Monat aktuell",-href=>"?cal_today=1"}," • "),
|
||||
$q->a({-class=>"linknav",-style=>"padding:0 0.5em;",-title=>"Monat vorwärts",-href=>"?cal_delta_start=0:1:0"}," → "),
|
||||
"$message"
|
||||
)),"\n";
|
||||
|
||||
my $sort_up = "up";
|
||||
my $sort_down = "down";
|
||||
$sort_up = "<b>$sort_up</b>" if($users_dms->{cal_sort_updown} eq "up");
|
||||
$sort_down = "<b>$sort_down</b>" if($users_dms->{cal_sort_updown} eq "down");
|
||||
|
||||
print $q->div({-style=>'background-color:silver;height:10px;'},""),"\n";
|
||||
|
||||
my $hstyle = "border-right: solid thin gray;border-bottom: solid thin gray;";
|
||||
my $search = "search";
|
||||
my $edit="ct_trans";
|
||||
my $new_key="new_transdate";
|
||||
|
||||
print $q->start_table({ -style=>"width:100%;", -border=>'0',-align=>'left', -cellpadding=>'1', -cellspacing=>'0'});
|
||||
print $q->Tr();
|
||||
print $q->td({-style=>"background-color:silver;$hstyle;width:30px;padding:1px 10px;"},$but->singlesubmit1("detail_search","$search")),"\n";
|
||||
|
||||
|
||||
#1. Search-fields
|
||||
my $h=3;
|
||||
print "<td class='search_line'>\n";
|
||||
print $q->a({-class=>"sortnav",-href=>"?cal_sort_updown=up\&offset=$offset\&limit=$limit",-title=>'Aufsteigend sortieren'},"$sort_up"),"|",$q->a({-class=>"sortnav",-href=>"?cal_sort_updown=down\&offset=$offset\&limit=$limit",-title=>'Absteigend sortieren'},"$sort_down"),"\n";
|
||||
foreach(@tpl_order){
|
||||
#$h++;
|
||||
my ($key,$des,$size) = split /=/,$_;
|
||||
if($key =~ /time/){
|
||||
$size="10px";
|
||||
print $q->textfield(-id=>'datepicker1',-class=>'etxt',-name=>"start_$key",-default=>"$start_date_time",-size=>"$size",-maxlength=>20), "-", $q->textfield(-id=>'datepicker2',-class=>'etxt',-name=>"end_$key",-default=>"$end_date_time",-size=>"$size",-maxlength=>20),"\n";
|
||||
}
|
||||
elsif($key =~ /owner/){
|
||||
print $but->selector_class("$key","eselect","width:80px;",$R::owner,@_users),"\n";
|
||||
}
|
||||
elsif($key =~ /int10/ && "$size" eq "select"){# && $node_meta->{tpl_id} == 205){#bike_state
|
||||
my @_lock_valxx = (":$des");
|
||||
while (my ($key, $value) = each %{ $dbt->{copri_conf}->{bike_state} }) {
|
||||
push @_lock_valxx, "$key:$value";#[1:available] ...
|
||||
}
|
||||
print $but->selector_class("$key","eselect","",$R::int10,@_lock_valxx),"\n";
|
||||
}
|
||||
elsif($key =~ /int12/ && "$size" eq "select"){# && $node_meta->{tpl_id} == 210){#Flotte bike_group (bikenode.main_id)
|
||||
my @_valxx = (":$des");
|
||||
foreach my $rid (sort { $bike_nodes->{$a}->{node_name} cmp $bike_nodes->{$b}->{node_name} } keys (%$bike_nodes)){
|
||||
push (@_valxx, "$bike_nodes->{$rid}->{main_id}:$bike_nodes->{$rid}->{node_name} ($bike_nodes->{$rid}->{main_id})");
|
||||
}
|
||||
print $but->selector_class("$key","eselect","width:100px;",$R::int12,@_valxx),"\n";
|
||||
}
|
||||
elsif($key =~ /int20/ && "$size" eq "select"){# && $node_meta->{tpl_id} == 205){#lock_state locked/unlocked
|
||||
my @_lock_valxx = (":$des");
|
||||
while (my ($key, $value) = each %{ $dbt->{copri_conf}->{lock_state} }) {
|
||||
push @_lock_valxx, "$key:$value";#[2:unlocked]
|
||||
}
|
||||
print $but->selector_class("$key","eselect","width:100px;",$R::int20,@_lock_valxx),"\n";
|
||||
}
|
||||
else{
|
||||
$size="9px" if($key =~ /int/);
|
||||
if($key =~ /ct_name/){
|
||||
print $q->textfield(-class=>'stxt2',-name=>"$key",-default=>"",-size=>"$size",-maxlength=>40, -placeholder=>"$des",-autofocus=>1),"\n";
|
||||
}else{
|
||||
print $q->textfield(-class=>'stxt2',-name=>"$key",-default=>"",-size=>"$size",-maxlength=>40, -placeholder=>"$des"),"\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
print "</td>\n";
|
||||
|
||||
|
||||
my ($daymarker,$raster_mmpx,$day4month) = $lb->month_line($users_dms);
|
||||
|
||||
print $q->Tr();
|
||||
print $q->td({-class=>'element',-style=>"height:1.5em;padding:0;border:0px solid green;",-colspan=>"$h",-nowrap=>"1"},"$day4month"),"\n";
|
||||
###
|
||||
|
||||
###Calendar Content
|
||||
my $nx;my $set_style="";my $kind;
|
||||
my $scale_color = $node_meta->{bg_color};
|
||||
my $edit="ct_trans";
|
||||
my $save_key="save";
|
||||
my $delete_key="delete";
|
||||
my $itime;
|
||||
my $start_time;
|
||||
my $end_time;
|
||||
my ($year_st,$mon_st,$day_st,$hh_st,$mm_st);
|
||||
my ($year_en,$mon_en,$day_en,$hh_en,$mm_en);
|
||||
|
||||
my $nr=0;
|
||||
my $i= $offset || 0;
|
||||
$users_dms->{cal_sort_updown} = "down" if(!$users_dms->{cal_sort_updown});
|
||||
foreach my $pid (sort {
|
||||
if($users_dms->{cal_sort_updown} eq "down"){
|
||||
$cttpos->{$b}->{end_time} cmp $cttpos->{$a}->{end_time}
|
||||
}else{
|
||||
$cttpos->{$a}->{end_time} cmp $cttpos->{$b}->{end_time}
|
||||
}
|
||||
} keys(%$cttpos)){
|
||||
|
||||
$nr++;
|
||||
$i++;
|
||||
$nx++;
|
||||
$set_style = "background-color:#fcfdfb;";
|
||||
$set_style = "background-color:#f4f1ee;" if($nx %= 2);
|
||||
#$set_style = "background-color:$varenv{calendar_active_color}" if("$R::c_idpos" == "$cttpos->{$pid}->{c_id}");
|
||||
|
||||
my $trans_style = "padding:0 5px;border: 2px solid #f7ae37;";
|
||||
my $stamm_style = "padding:0 5px;border: 2px solid #98c13b;";
|
||||
my $ware_style = "padding:0 5px;border: 2px solid #dcd77f;";
|
||||
|
||||
my ($ct_name,$ct_txt00,$ct_txt01,$ct_phone,$c_id4trans,$tpl_id4trans,$u_name,$order_state22);
|
||||
my $id = $cttpos->{$pid}->{ct_id};
|
||||
if($ct4rel->{$id}->{c_id} == $cttpos->{$pid}->{ct_id}){
|
||||
$ct_name = $ct4rel->{$id}->{ct_name};
|
||||
$ct_txt00 = $ct4rel->{$id}->{txt00};
|
||||
$ct_txt01 = $ct4rel->{$id}->{txt01};
|
||||
$ct_phone = $ct4rel->{$id}->{txt07};
|
||||
$order_state22 = $ct4rel->{$id}->{txt22};
|
||||
$c_id4trans = $ct4rel->{$id}->{c_id};
|
||||
$tpl_id4trans = $ct4rel->{$id}->{template_id};
|
||||
$trans_style .= "background-color:#f7ae37;" if($ct4rel->{$id}->{c_id} == $users_dms->{c_id4trans});
|
||||
}
|
||||
($year_st,$mon_st,$day_st,$hh_st,$mm_st) = $lb->split_date($cttpos->{$pid}->{start_time}) if($cttpos->{$pid}->{start_time});
|
||||
($year_en,$mon_en,$day_en,$hh_en,$mm_en) = $lb->split_date($cttpos->{$pid}->{end_time}) if($cttpos->{$pid}->{end_time});
|
||||
|
||||
if($year_st && $mon_st && $day_st && $hh_st && $mm_st && $year_en && $mon_en && $day_en && $hh_en && $mm_en){
|
||||
|
||||
#generate px for rent scale
|
||||
my $start_nr = $year_st . $mon_st . $day_st . $hh_st . $mm_st;
|
||||
my $end_nr = $year_en . $mon_en . $day_en . $hh_en . $mm_en;
|
||||
my $day_stpx = 0;
|
||||
my $rent_day_px = 0;
|
||||
my $time_style;
|
||||
if($start_nr <= $end_nr){
|
||||
($day_stpx,$rent_day_px) = $lb->rent_scale($users_dms,$year_st,$mon_st,$day_st,$hh_st,$mm_st,$year_en,$mon_en,$day_en,$hh_en,$mm_en);
|
||||
}else{
|
||||
$time_style="color:red;";
|
||||
}
|
||||
|
||||
if($cttpos->{$pid}->{start_time}){
|
||||
$itime = $lb->time4de($cttpos->{$pid}->{itime},1);
|
||||
$start_time = $lb->time4de($cttpos->{$pid}->{start_time},1);
|
||||
$end_time = $lb->time4de($cttpos->{$pid}->{end_time},1);
|
||||
}
|
||||
|
||||
my $u_name = $cttpos->{$pid}->{owner};
|
||||
my $u_name_end = $cttpos->{$pid}->{owner_end};
|
||||
foreach my $ctu_id (keys (%$ct_users)){
|
||||
if($channel_map->{$u_name}){
|
||||
$u_name = $channel_map->{$u_name};
|
||||
}elsif($cttpos->{$pid}->{owner} eq $ct_users->{$ctu_id}->{c_id}){
|
||||
$u_name = $ct_users->{$ctu_id}->{txt01};
|
||||
}
|
||||
if($channel_map->{$u_name_end}){
|
||||
$u_name_end = $channel_map->{$u_name_end};
|
||||
}elsif($cttpos->{$pid}->{owner_end} eq $ct_users->{$ctu_id}->{c_id}){
|
||||
$u_name_end = $ct_users->{$ctu_id}->{txt01};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#if($ct_name){
|
||||
if(1==1){
|
||||
print "<Tr><td class='element' colspan='$h' style='$set_style;0.91em;padding:0.3em 0 0 0em;'>\n";
|
||||
|
||||
my $pos_hash = $cttpos->{$pid};
|
||||
my $pos_details = "";
|
||||
foreach my $did (sort keys (%{$pos_hash})){
|
||||
$pos_details .= $did . " = " . $pos_hash->{$did} . "</br>" if($pos_hash->{$did});
|
||||
}
|
||||
my $pos_id = "";
|
||||
my $user_device = "";
|
||||
#if($users_dms->{u_id} == $dbt->{copri_conf}->{bike_state}->{superu_id}){
|
||||
if($users_dms->{u_id} && $users_dms->{u_id} =~ /1842|5781|11765/){
|
||||
$pos_id = $q->div({-class=>"popup",-onclick=>"toggle_box('$pid')"},"$cttpos->{$pid}->{c_id}", $q->span({-class=>"popuptext",-id=>"$pid"},"$pos_details"));
|
||||
my $txt26 = $cttpos->{$pid}->{txt26};
|
||||
my $txt21 = $cttpos->{$pid}->{txt21};
|
||||
$txt26 = substr($cttpos->{$pid}->{txt26},0,20) . " ..." if(length($cttpos->{$pid}->{txt26}) > 20);
|
||||
$txt21 = substr($cttpos->{$pid}->{txt21},0,50) . " ..." if(length($cttpos->{$pid}->{txt21}) > 50);
|
||||
$user_device = "";
|
||||
$user_device .= " → lock charge $cttpos->{$pid}->{int14} %" if($cttpos->{$pid}->{int14});
|
||||
$user_device .= " → agent $txt26" if($txt26);
|
||||
$user_device .= " → device $txt21" if($txt21);
|
||||
}
|
||||
|
||||
my $bikenr = "$cttpos->{$pid}->{barcode}";
|
||||
$bikenr = $q->a({-class=>"linknav3",-style=>"$stamm_style",-href=>"$script/$users_dms->{fullurl}/Waren/?detail_search=1&s_barcode=$cttpos->{$pid}->{barcode}",-title=>"Rad im Warenstamm"},"$cttpos->{$pid}->{barcode}") if($cttpos->{$pid}->{cc_id});
|
||||
# (Flotte $cttpos->{$pid}->{int12})
|
||||
#
|
||||
|
||||
my $status = "$dbt->{copri_conf}->{bike_state}->{$cttpos->{$pid}->{int10}}" || "state failure";
|
||||
$status = "<span style='color:#c63e3e;'>$dbt->{copri_conf}->{bike_state}->{$cttpos->{$pid}->{int10}}</span>" if($cttpos->{$pid}->{int10} == 2 || $cttpos->{$pid}->{int10} == 3);
|
||||
if($cttpos->{$pid}->{int10} ne $ct4rel_ware->{$cttpos->{$pid}->{cc_id}}->{int10}){
|
||||
$status = "<span style='border: 1px solid #c63e3e;'>$dbt->{copri_conf}->{bike_state}->{$cttpos->{$pid}->{int10}}</span>";
|
||||
}
|
||||
my $lock_state = "lock failure" if(!$cttpos->{$pid}->{int20});
|
||||
$lock_state = "locked" if($cttpos->{$pid}->{int20} == 1);
|
||||
$lock_state = "<span style='color:#c63e3e;'>unlocked</span>" if($cttpos->{$pid}->{int20} == 2);
|
||||
$lock_state = "<span style='color:#c63e3e;'>locking in progress</span>" if($cttpos->{$pid}->{int20} == 3);
|
||||
|
||||
my $track_info = "";
|
||||
my $co2saving = "";
|
||||
if($cttpos->{$pid}->{int26}){
|
||||
$co2saving = $pri->co2calc($cttpos->{$pid});
|
||||
$cttpos->{$pid}->{int26} =~ s/\./,/;
|
||||
$track_info = "→ - $co2saving kg CO² ($cttpos->{$pid}->{int26} km)";
|
||||
}
|
||||
|
||||
if($node_meta->{ct_table} eq "contenttranspos"){
|
||||
my $start_station = "$cttpos->{$pid}->{int06}";
|
||||
my $end_station = "$cttpos->{$pid}->{int04}";
|
||||
$start_station = $q->a({-class=>"linknav3",-style=>"",-href=>"$script/$users_dms->{fullurl}/Waren/?detail_search=1&s_int04=$cttpos->{$pid}->{int06}",-title=>"Rad Warenstamm nach Station filtern"},"$cttpos->{$pid}->{int06}") if($ct4rel_ware->{$cttpos->{$pid}->{cc_id}}->{rel_id});
|
||||
$end_station = $q->a({-class=>"linknav3",-style=>"",-href=>"$script/$users_dms->{fullurl}/Waren/?detail_search=1&s_int04=$cttpos->{$pid}->{int04}",-title=>"Rad Warenstamm nach Station filtern"},"$cttpos->{$pid}->{int04}") if($ct4rel_ware->{$cttpos->{$pid}->{cc_id}}->{rel_id});
|
||||
my $kunde = $q->a({-class=>"linknav3",-style=>"$ware_style",-href=>"$script/$users_dms->{fullurl}/Kunden/?detail_search=1&s_c_id=$cttpos->{$pid}->{ca_id}",-title=>"Kunde im Kundenstamm"},"$cttpos->{$pid}->{txt08} ($cttpos->{$pid}->{ca_id})");#2021-05-24 saves kd name
|
||||
|
||||
print $q->div({-style=>'float:left;margin-left:1em;font-size:0.91em;'}, "$i) <span style='$time_style'> $start_time – $end_time</span> → $kunde → Start Station $start_station → End Station $end_station → Rad $bikenr $status $lock_state $track_info → $u_name $pos_id"),"\n";
|
||||
print $q->div({-style=>'float:left;margin-left:1em;font-size:0.91em;'}, "→ Faktura", $q->a({-class=>"linknav3",-style=>"$trans_style",-href=>"$script/$users_dms->{fullurl}/Faktura?ct_trans=open\&c_id4trans=$c_id4trans\&tpl_id4trans=$tpl_id4trans\&kind_of_trans=Faktura\&owner=$users_dms->{owner}",-title=>"Faktura Terminal öffnen"},"\#$ct_name")),"\n";
|
||||
print $q->div({-style=>'float:left;margin-left:1em;font-size:0.91em;'}, "$user_device"),"\n";
|
||||
|
||||
}elsif($node_meta->{ct_table} eq "contenttheftpos"){
|
||||
my $speed = 0;
|
||||
if($cttpos->{$pid}->{int07} && $cttpos->{$pid}->{int07} > 0){
|
||||
$speed = $cttpos->{$pid}->{int07} * 1.852;
|
||||
$speed = $lb->round_half($speed);
|
||||
}
|
||||
my $event_type = "";
|
||||
$event_type = "Diebstahlalarm" if($cttpos->{$pid}->{int01});
|
||||
$event_type = "GPS $cttpos->{$pid}->{txt06} → speed $speed km/h → distance $cttpos->{$pid}->{int08} Meter" if($cttpos->{$pid}->{int02});
|
||||
print $q->div({-style=>'float:left;margin-left:1em;font-size:0.91em;'}, "$i) <span style='$time_style'> $end_time</span> → $event_type → Rad $bikenr → $u_name $pos_id"),"\n";
|
||||
|
||||
}
|
||||
|
||||
print $q->div({-style=>"position:absolute;margin-left:$daymarker;border-right: solid thin #86cb00;height:1.5em;"}," "),"\n" if("$mon" eq "$mon_today");
|
||||
print $q->div({-style=>"position:static;margin-left:$day_stpx;width:$rent_day_px;height:1.5em;background-color:$scale_color;"}," "),"\n";
|
||||
print "</td></Tr>\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
print $q->end_table;
|
||||
###
|
||||
|
||||
print "</div>\n";
|
||||
|
||||
my $offset_nr = $offset + $nr;
|
||||
|
||||
#backward | forward
|
||||
print $q->div({-style=>'float:left;padding:0.5em;'}, "Zeile: $offset - $offset_nr"),"\n";
|
||||
print "<div style='padding:0.5em;'>\n";
|
||||
print $q->a({-class=>"linknav",-href=>"?go=backward_list;offset=$offset;limit=$limit",-title=>''},"< zurück ... ") if($offset >= $limit);
|
||||
print $q->a({-class=>"linknav",-href=>"?go=forward_list;offset=$offset;limit=$limit",-title=>''}," ... vorwärts >") if($nr >= $limit-10);
|
||||
print "</div>\n";
|
||||
|
||||
print $q->end_form;
|
||||
}
|
||||
1;
|
||||
|
1517
copri4/main/src/Tpl/Liste3.pm
Normal file
1517
copri4/main/src/Tpl/Liste3.pm
Normal file
File diff suppressed because it is too large
Load diff
139
copri4/main/src/Tpl/MandantConf.pm
Normal file
139
copri4/main/src/Tpl/MandantConf.pm
Normal file
|
@ -0,0 +1,139 @@
|
|||
package MandantConf;
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
# Copyright (c) Rainer Gümpelein, TeilRad GmbH
|
||||
#
|
||||
#
|
||||
use strict;
|
||||
use warnings;
|
||||
use CGI;
|
||||
use CGI::Carp qw(fatalsToBrowser);
|
||||
use CGI ':standard';
|
||||
use Lib::Config;
|
||||
use Mod::Buttons;
|
||||
use Mod::Libenz;
|
||||
use Mod::Libenzdb;
|
||||
use Mod::DBtank;
|
||||
|
||||
sub new {
|
||||
my $class = shift;
|
||||
my $self = {};
|
||||
bless($self,$class);
|
||||
return $self;
|
||||
}
|
||||
|
||||
#Template
|
||||
sub tpl(){
|
||||
my $node_meta = shift;
|
||||
my $users_dms = shift;
|
||||
my $u_group = shift;
|
||||
my $return = shift;
|
||||
|
||||
my $q = new CGI;
|
||||
my $cf = new Config;
|
||||
my $lb = new Libenz;
|
||||
my $db = new Libenzdb;
|
||||
my $dbt = new DBtank;
|
||||
my $but = new Buttons;
|
||||
my %ib = $but->ibuttons();
|
||||
my %varenv = $cf->envonline();
|
||||
my $script = $q->script_name();
|
||||
my $path_info = $q->path_info();
|
||||
my $path = $path_info;
|
||||
#with meta_host,
|
||||
if("$varenv{metahost}"){
|
||||
$path = "$script" . "$path_info";
|
||||
$script="";
|
||||
}
|
||||
$path =~ s/\/user|\/manager|\/admin//;
|
||||
my $lang = "de";
|
||||
my $dbh = "";
|
||||
my $rel = {};
|
||||
my $ct = {};
|
||||
if($node_meta->{ct_table} eq "contentuser"){
|
||||
if(($node_meta->{node_name} eq "Firma") && ($users_dms->{u_id} eq $varenv{superu_id})){
|
||||
$rel = $db->get_rel4tpl($node_meta->{main_id},$lang,"","201","","",">0");
|
||||
$ct = $db->get_content1("contentuser",$rel->{content_id});
|
||||
}elsif(($node_meta->{node_name} eq "System") && ($users_dms->{u_id} eq $varenv{superu_id})){
|
||||
$rel = $db->get_rel4tpl($node_meta->{main_id},$lang,"","215","","",">0");
|
||||
$ct = $db->get_content1("contentuser",$rel->{content_id});
|
||||
}elsif($node_meta->{node_name} eq "Kontakt-Hotline" && $users_dms->{int08} >= 1){
|
||||
$rel = $db->get_rel4tpl($node_meta->{main_id},$lang,"","197","","",">0");
|
||||
$ct = $db->get_content1("contentuser",$rel->{content_id});
|
||||
}else{
|
||||
$return = "failure::Abbruch. Keine Zugriffsberechtigung";
|
||||
}
|
||||
}
|
||||
|
||||
my $tpl = $db->get_tpl($rel->{template_id});
|
||||
my @tpl_order = split /,/,$tpl->{tpl_order};
|
||||
my $u_name = $dbt->sys_username($dbh,$ct->{owner});
|
||||
$ct->{mtime} = $lb->time4de($ct->{mtime},"1");
|
||||
|
||||
print "<div id='Content4list'>";
|
||||
print $q->div({-class=>"copri_header",-style=>"background-color:#cccccc;"},"Pfad: $path");
|
||||
print $q->div({-style=>'background-color:silver;height:10px;'},""),"\n";
|
||||
print $q->start_form();
|
||||
|
||||
#Content
|
||||
print $q->start_table({-border=>'0', -width=>'100%',-align=>'center', -cellpadding=>'3', -cellspacing=>'0'});
|
||||
print $q->Tr();
|
||||
if($R::config2edit){
|
||||
print "<td class='ct_editline'>";
|
||||
print $q->hidden(-name=>'owner',-override=>'1', -value=>"$users_dms->{u_id}");
|
||||
print $q->hidden(-name=>'c_id',-override=>'1', -value=>"$ct->{c_id}");
|
||||
print $q->hidden(-name=>'rel_id',-override=>'1', -value=>"$rel->{rel_id}");
|
||||
print $but->singlesubmit7("rel_edit","save_user","$ib{save}");
|
||||
print "</td>\n";
|
||||
}else{
|
||||
print "<td class='ct_editline'>";
|
||||
print $q->a({-class=>"editnav",-href=>"$script$path?config2edit=1",-title=>'bearbeiten'}, $q->img({-src=>"$varenv{metahost}/glyphicons/glyphicons-151-edit.png"}));
|
||||
print "</td>\n";
|
||||
}
|
||||
print $q->td({-style=>"background-color:white;padding-right:10px;border-bottom: 1px solid silver;text-align:right;font-size:12px;"}, "$u_name / $ct->{mtime}");
|
||||
|
||||
my $i=0;
|
||||
foreach (@tpl_order){
|
||||
$i++;
|
||||
my ($key,$des,$size) = split /=/,$_;
|
||||
$size = "60" if($key =~ /ct_name|txt/ && !$size);
|
||||
$ct->{$key} = $q->unescapeHTML("$ct->{$key}");
|
||||
$ct->{$key} = $lb->newline($ct->{$key});
|
||||
my $value = "";
|
||||
if($R::config2edit){
|
||||
if($size eq "area"){
|
||||
$value = "<textarea class='etxtarea' name='$key' rows=2 cols=40>$ct->{$key}</textarea>";
|
||||
}elsif($size =~ /\w\+\w/){
|
||||
my ($a,$b) = split /\+/,$size;
|
||||
my $a_checked;
|
||||
my $b_checked;
|
||||
$a_checked = "checked" if($ct->{$key} eq "$a" || !$ct->{$key});
|
||||
$b_checked = "checked" if($ct->{$key} eq "$b");
|
||||
$value = "$a <input type='radio' name='$key' value='$a' $a_checked> $b <input type='radio' name='$key' value='$b' $b_checked>";
|
||||
}elsif($key =~ /txt|ct_name/){
|
||||
$value = "<input class='etxt' type='text' name='$key' value='$ct->{$key}' size=$size maxlength=200>";
|
||||
}elsif($key =~ /int/){
|
||||
$value = "<input class='etxt' type='text' name='$key' value='$ct->{$key}' size=6 maxlength=10>";
|
||||
}elsif($key =~ /img/){
|
||||
$value = "<input class='etxt' type='text' name='$key' value='$ct->{$key}' size=40 maxlength=40>";
|
||||
}
|
||||
}else{
|
||||
$value = "$ct->{$key}";
|
||||
}
|
||||
print $q->Tr();
|
||||
if($key =~ /header/){
|
||||
print $q->td({-class=>'tdval2',-colspan=>'2'},$q->b("<br />$des")),"\n";
|
||||
}elsif($users_dms->{u_id} eq $varenv{superu_id}){
|
||||
print $q->td({-class=>'tdescr2'},"$des ($key)"),"\n";
|
||||
}else{
|
||||
print $q->td({-class=>'tdescr2'},"$des"),"\n";
|
||||
}
|
||||
print $q->td({-class=>'tdval2'}, "$value"),"\n" if($key !~ /header/);
|
||||
}
|
||||
print $q->end_table;
|
||||
print $q->end_form;
|
||||
print "</div>";
|
||||
|
||||
return $return;
|
||||
}
|
||||
1;
|
436
copri4/main/src/Tpl/SubListe.pm
Normal file
436
copri4/main/src/Tpl/SubListe.pm
Normal file
|
@ -0,0 +1,436 @@
|
|||
package SubListe;
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
# Copyright (c) Rainer Gümpelein, TeilRad GmbH
|
||||
#
|
||||
#
|
||||
#uncomment for perl -cw src/Tpl/Liste3.pm
|
||||
#use lib qw(/var/www/copri4/shareedms-primary/src);
|
||||
#
|
||||
use strict;
|
||||
use warnings;
|
||||
use POSIX;
|
||||
use CGI;
|
||||
use URI::Escape;
|
||||
use Encode;
|
||||
use Lib::Config;
|
||||
use Mod::Buttons;
|
||||
use Mod::Libenz;
|
||||
use Mod::Libenzdb;
|
||||
use Mod::DBtank;
|
||||
use Mod::APIfunc;
|
||||
|
||||
use Date::Calc qw(:all);
|
||||
use Storable;
|
||||
use Data::Dumper;
|
||||
|
||||
sub new {
|
||||
my $class = shift;
|
||||
my $self = {};
|
||||
bless($self,$class);
|
||||
return $self;
|
||||
}
|
||||
|
||||
#Template
|
||||
sub tpl(){
|
||||
my $node_meta = shift;
|
||||
my $users_dms = shift;
|
||||
my $u_group = shift;
|
||||
my $return = shift;
|
||||
|
||||
my $q = new CGI;
|
||||
my @keywords = $q->param;
|
||||
my $keycount = scalar(@keywords);
|
||||
my $time = time;
|
||||
my $now_db = strftime("%d.%m.%Y %H:%M:%S",localtime(time));
|
||||
my $cf = new Config;
|
||||
my $lb = new Libenz;
|
||||
my $db = new Libenzdb;
|
||||
my $dbt = new DBtank;
|
||||
my $apif = new APIfunc;
|
||||
|
||||
my $but = new Buttons;
|
||||
my %varenv = $cf->envonline();
|
||||
my $script = $q->script_name();
|
||||
my $path_info = $q->path_info();
|
||||
my $path = $path_info;
|
||||
#with meta_host,
|
||||
if("$varenv{metahost}"){
|
||||
$path = "$script" . "$path_info";
|
||||
$script="";
|
||||
}
|
||||
my $lang = "de";
|
||||
my $dbh = "";
|
||||
|
||||
my $parent_node4rel = $db->get_node4rel($node_meta->{parent_id},"","","null");
|
||||
my %ib = $but->ibuttons();
|
||||
my $tpl_order = $node_meta->{tpl_order};
|
||||
if(1==2 && $node_meta->{tpl_id} >= 400 && $node_meta->{tpl_id} < 500){
|
||||
$tpl_order =~ s/barcode=Rad/barcode=Rad,txt10=Station-log,txt09=Wartungsprotokoll=area/;
|
||||
$tpl_order =~ s/int04=Station/int04=Station,txt09=Wartungsprotokoll=area/ if($node_meta->{tpl_id} == 403);
|
||||
}
|
||||
my @tpl_order = split /,/,$tpl_order;
|
||||
my $message = "";
|
||||
#$message = "Fehler: bitte Unter \"Servicetechnik\" die Datenklasse konfigurieren!" if(scalar(@tpl_order) < 1);
|
||||
my $s_owner_id = "";
|
||||
#my $s_u_name = "";
|
||||
|
||||
my @viewsel = split /\//,$1 if($path =~ /^\/(.*)/);
|
||||
my $depth = scalar(@viewsel);
|
||||
my $view_base = $viewsel[1] || "nothing";#like Waren
|
||||
my $node_mandant = $db->get_node("$view_base","$lang");
|
||||
|
||||
#TODO, build service path by pos.template_id or pos.barcode alis bike_id
|
||||
#my $pref = { table => "content",
|
||||
# table_pos => "contentpos",
|
||||
#};
|
||||
#my $template_group = $dbt->pos_template_group($dbh,$pref);
|
||||
#my $subrelnode = $dbt->get_subrelnode($dbh,$crecord->{main_id},$template_id_pos);
|
||||
|
||||
my $searchref = {};
|
||||
my $channel_map = $dbt->channel_map();
|
||||
|
||||
my $mapref = {};
|
||||
my $ct_users = $dbt->users_map($dbh,$mapref);#get serviceAPP and DMS users from contentadr
|
||||
|
||||
my @_users = ("");
|
||||
foreach my $id (sort { $channel_map->{$a} cmp $channel_map->{$b} } keys (%$channel_map)){
|
||||
push (@_users, "$id:$channel_map->{$id}");
|
||||
if($channel_map->{$id} eq $R::s_owner){
|
||||
$searchref->{owner} = $id;
|
||||
#$s_u_name = $channel_map->{$id};
|
||||
}
|
||||
}
|
||||
|
||||
foreach my $ctu_id (sort { $ct_users->{$a}->{txt01} cmp $ct_users->{$b}->{txt01} } keys (%$ct_users)){
|
||||
push (@_users, "$ct_users->{$ctu_id}->{c_id}:$ct_users->{$ctu_id}->{txt01}");
|
||||
if($ct_users->{$ctu_id}->{ct_name} && ($ct_users->{$ctu_id}->{txt01} =~ /$R::s_owner/i) || ($ct_users->{$ctu_id}->{c_id} eq $searchref->{owner})){
|
||||
$searchref->{owner} = $ct_users->{$ctu_id}->{c_id};
|
||||
#$s_u_name = $ct_users->{$ctu_id}->{txt01};
|
||||
}
|
||||
}
|
||||
|
||||
my $limit = $R::limit || $varenv{limit};
|
||||
my $offset = $R::offset || "0";
|
||||
if($node_meta->{int10} && $node_meta->{int10} < $varenv{limit}){
|
||||
$offset = 0;
|
||||
}
|
||||
#backward | forward
|
||||
if($R::go eq "backward_list"){
|
||||
$offset -= $limit if($offset >= $limit);
|
||||
}elsif($R::go eq "forward_list"){
|
||||
$offset += $limit;
|
||||
}
|
||||
|
||||
my $date; my $start_chck=0;my $end_chck=0;
|
||||
my $last_year;
|
||||
if($R::s_start_mtime){
|
||||
($date,$start_chck) = $lb->checkdate($R::s_start_mtime) if($R::s_start_mtime !~ "%");
|
||||
$message .= ">>> Datum Eingabefehler: $date <<<" if($start_chck);
|
||||
my ($c_dd,$c_mm,$c_yy) = split(/\./,$date);
|
||||
$last_year = $c_yy if("$c_yy" eq "2011");
|
||||
}
|
||||
if($R::s_end_mtime){
|
||||
($date,$end_chck) = $lb->checkdate($R::s_end_mtime) if($R::s_end_mtime !~ "%");
|
||||
$message .= ">>> Datum Eingabefehler: $date <<<" if($end_chck);
|
||||
my ($c_dd,$c_mm,$c_yy) = split(/\./,$date);
|
||||
}
|
||||
|
||||
#because of search we need parents
|
||||
my $main_ids = $parent_node4rel->{main_id};
|
||||
my $tpl_ids = $parent_node4rel->{template_id};
|
||||
|
||||
my $rows = 0;
|
||||
my $scol = "mtime";
|
||||
my $table = "content";
|
||||
$searchref->{table_pos} = "contentpos";
|
||||
if($node_meta->{tpl_id} > 600 && $node_meta->{tpl_id} < 700){
|
||||
$table = "contentadr";
|
||||
$searchref->{table_pos} = "contentadrpos";
|
||||
$searchref->{template_id_pos} = "$node_meta->{tpl_id}";
|
||||
}
|
||||
if($node_meta->{tpl_id} == 198){
|
||||
my $mandant_id = 100002;
|
||||
$table = "contentadr";
|
||||
$searchref->{table_pos} = "users";
|
||||
#$searchref->{template_id_pos} = "$node_meta->{tpl_id}";
|
||||
$main_ids = 200011;
|
||||
$tpl_ids = 202;
|
||||
print<<EOF
|
||||
<style>
|
||||
.ui-autocomplete {
|
||||
text-align:left;
|
||||
background:#eeeeee;
|
||||
border:1px solid silver;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script>
|
||||
\$(function() {
|
||||
\$('#json_selectadr').autocomplete({
|
||||
source: '/ajax_json?mandant_id=$mandant_id&table=contentadr',
|
||||
minLength: 2,
|
||||
select: function(event, ui) {
|
||||
\$('#vorname_name').val(ui.item.vorname_name);
|
||||
\$('#c_idadr').val(ui.item.c_id);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
});
|
||||
</script>
|
||||
EOF
|
||||
;
|
||||
|
||||
}
|
||||
|
||||
#print Dumper($node_meta);
|
||||
my $hashfile = "$varenv{logdir}/$users_dms->{u_id}-$searchref->{table_pos}-searchhash";
|
||||
my $ct4rel = {};
|
||||
if(!$start_chck && !$end_chck && $parent_node4rel ne "Servicetechnik" && $main_ids && $tpl_ids){
|
||||
#$rows = $db->count_content($searchref->{table_pos},"$main_ids","$tpl_ids");
|
||||
|
||||
#collect search keys
|
||||
foreach my $postkey (@keywords){
|
||||
foreach(@tpl_order){
|
||||
my ($key,$val,$size) = split /=/,$_;
|
||||
if($postkey =~ /s_$key|s_start_$key|s_end_$key/){
|
||||
my $val = $q->param($postkey);
|
||||
$postkey =~ s/^s_//;
|
||||
$searchref->{$postkey} = $val;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#trying to save hashref
|
||||
if($R::detail_search && ref($searchref) eq "HASH"){
|
||||
store $searchref, $hashfile;
|
||||
}elsif($keycount > 0 && !$R::detail_search && -f $hashfile){
|
||||
$searchref = {};
|
||||
$searchref = retrieve($hashfile);
|
||||
}
|
||||
#print Dumper($searchref);
|
||||
my $export = "";
|
||||
my $todo = "";
|
||||
my $ck4ex = "";
|
||||
#only if permission read
|
||||
if(($node_meta->{ct_table} eq "users" && $users_dms->{int07} >= 1) || ($node_meta->{ct_table} eq "contentadrpos" && $users_dms->{int02} >= 1) || ($node_meta->{ct_table} eq "contentpos" && $users_dms->{int01} >= 1)){
|
||||
$ct4rel = $db->search_content3($searchref,$table,$node_mandant->{parent_id},"",$users_dms->{u_id},$lang,"$main_ids","$tpl_ids","","",$time,"",$scol,$users_dms->{sort_updown},$offset,$limit,$export,$todo,$ck4ex,"");
|
||||
}else{
|
||||
$return = "failure::Abbruch. Keine Zugriffsberechtigung";
|
||||
}
|
||||
}
|
||||
|
||||
print "<div id='Content4list'>\n";
|
||||
if($varenv{syshost} ne "azn"){
|
||||
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=>"$header_style"},"$message"));
|
||||
}
|
||||
print $q->div({-style=>'background-color:silver;height:10px;'},""),"\n";
|
||||
|
||||
print $q->start_form(-name=>'searchform'),"\n";
|
||||
print $q->hidden(-name=>'offset', -value=>"$offset"),"\n";
|
||||
print $q->hidden(-name=>'main_id', -value=>"$node_meta->{main_id}"),"\n";
|
||||
print $q->hidden(-name=>'mode', -value=>"manager"),"\n";
|
||||
print $q->hidden(-name=>'owner', -value=>"$users_dms->{u_id}"),"\n";
|
||||
print $q->hidden(-name=>'template_id', -value=>"$node_meta->{template_id}"),"\n";
|
||||
|
||||
my $hstyle = "width:20px;background-color:$node_meta->{bg_color};border-right: solid thin gray;border-bottom: solid thin gray;";
|
||||
print $q->start_table({ -style=>'clear:both;', -border=>'0', -width=>'100%',-align=>'center', -cellpadding=>'0', -cellspacing=>'0'}),"\n";
|
||||
|
||||
#new_edit and search (disabled for DMS-Account)
|
||||
if($node_meta->{tpl_id} != 198){
|
||||
my $edit="rel_edit";
|
||||
my $new_key="service_done";
|
||||
|
||||
my $search = "search";
|
||||
print $q->Tr(),"\n";
|
||||
print $q->td({-style=>"background-color:silver;$hstyle"},$but->singlesubmit1("detail_search","$search","","")),"\n";
|
||||
|
||||
#https://tinkwwp.copri4.de/APIjsonserver?request=service_done&bike=202&work_id=txt11&work_val=aaa&authcookie=1842_ad720ed63bd40039e4abe8a9ad7315e1_34567890
|
||||
#disabled
|
||||
if(1==2 && $node_meta->{tpl_id} >= 400 && $node_meta->{tpl_id} < 500){
|
||||
print $q->td({-style=>"$hstyle"}, $but->singlesubmit2glyph("$edit","$new_key","$ib{$new_key}","background-color:$node_meta->{bg_color};")),"\n";
|
||||
}else{
|
||||
print $q->td({-style=>"$hstyle"}," "),"\n";
|
||||
}
|
||||
|
||||
#1. Search-fields
|
||||
my $s_val;
|
||||
foreach(@tpl_order){
|
||||
my ($key,$val,$size) = split /=/,$_;
|
||||
$size = 15 if($size =~ /area/);
|
||||
$size = 10 if($size =~ /time/);
|
||||
$size = 2 if($size =~ /checkbox/);
|
||||
|
||||
$s_val = $searchref->{$key};
|
||||
#print "$key=$searchref->{$key}|";
|
||||
if($key =~ /node|txt|int|uri|ct_name|_id|barcode|sort|public/){
|
||||
if($key =~ /barcode|int04/){
|
||||
print $q->td({-class=>"search_line"},$q->textfield(-class=>'stxt',-name=>"s_$key",-size=>"4",-default=>"$s_val",-maxlength=>40, -autofocus=>1)),"\n";
|
||||
}else{
|
||||
print $q->td({-class=>"search_line"},$q->textfield(-class=>'stxt',-name=>"s_$key",-size=>"$size",-default=>"$s_val",-maxlength=>40)),"\n";
|
||||
}
|
||||
}elsif($key =~ /owner/){
|
||||
print $q->td({-class=>'search_line'},$but->selector("s_$key","","$s_val",@_users)),"\n";
|
||||
}
|
||||
my $s_mtime; my $e_mtime;
|
||||
if($key eq "mtime"){
|
||||
$s_mtime = $searchref->{start_mtime};
|
||||
$e_mtime = $searchref->{end_mtime};
|
||||
}
|
||||
if($key eq "date_time"){
|
||||
$s_mtime = $searchref->{start_date_time};
|
||||
$e_mtime = $searchref->{end_date_time};
|
||||
}
|
||||
|
||||
print $q->td({-nowrap=>1,-class=>"search_line"},$q->textfield(-id=>'datepicker1',-class=>'etxt',-name=>"s_start_$key",-default=>"$s_mtime",-size=>"$size",-maxlength=>20),"-",$q->textfield(-id=>'datepicker2',-class=>'etxt',-name=>"s_end_$key",-default=>"$e_mtime",-size=>"$size", -maxlength=>20)),"\n" if($key =~ /time/);
|
||||
}#end Search-fields
|
||||
}
|
||||
|
||||
#2. Tableheader
|
||||
print $q->Tr();
|
||||
my $i=0;
|
||||
if($node_meta->{tpl_id} == 198){
|
||||
my $edit="base_edit";
|
||||
my $new_key="new_dmsusers";
|
||||
|
||||
print "<th style='$hstyle;width:250px;'>\n";
|
||||
print $but->singlesubmit2glyph("$edit","$new_key","$ib{$new_key}","background-color:$node_meta->{bg_color};"),"\n";
|
||||
#print $q->hidden(-name=>'c_id4trans', -override=>'1', -value=>"$ctx->{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";
|
||||
print $q->textfield(-style=>'border:1px solid grey;height:25px;width:80%;',-id=>"json_selectadr",-name=>"json_selectadr", -placeholder=>'Neuer DMS-Account', -value=>""),"\n";
|
||||
|
||||
print "</th>\n";
|
||||
}else{
|
||||
print $q->th({-style=>""}," "),"\n";
|
||||
print $q->th({-style=>""}," "),"\n";
|
||||
}
|
||||
#my $sort_up = "up";
|
||||
#my $sort_down = "down";
|
||||
#$sort_up = "<b>$sort_up</b>" if($users_dms->{sort_updown} eq "up");
|
||||
#$sort_down = "<b>$sort_down</b>" if($users_dms->{sort_updown} eq "down");
|
||||
#print $q->th($q->a({-class=>"sortnav",-href=>"?sort_updown=up\&offset=$offset\&limit=$limit",-title=>'Aufsteigend sortieren'},"$sort_up"),"|",$q->a({-class=>"sortnav",-href=>"?sort_updown=down\&offset=$offset\&limit=$limit",-title=>'Absteigend sortieren'},"$sort_down")),"\n";
|
||||
|
||||
foreach (@tpl_order){
|
||||
my ($key,$val,$size,$interval) = split /=/,$_;
|
||||
my $divstyle = "";
|
||||
if($size =~ /checkbox/){
|
||||
$size = 2;
|
||||
$divstyle = "width:20px;white-space:nowrap;overflow:hidden;";
|
||||
}
|
||||
my $sort_title="| $val";
|
||||
$val = "<b>$val</b>" if($key eq $users_dms->{col_sort});
|
||||
$i++;
|
||||
print $q->th({-style=>'padding:5px 0'},$q->div({-style=>"$divstyle"},$q->a({-class=>"sortnav",-href=>"?col_sort=$key\&offset=$offset\&limit=$limit",-title=>"$val"},"$val"))),"\n" if($key ne "u_id");
|
||||
}#end Tableheader
|
||||
|
||||
|
||||
#BIG LOOP loop content table
|
||||
#if($users_dms->{sort_updown} eq "up"){
|
||||
my $nr=0;
|
||||
foreach my $id (sort {
|
||||
if($users_dms->{sort_updown} eq "down"){
|
||||
if ($scol =~ /barcode|int/) {
|
||||
$ct4rel->{$b}->{$scol} <=> $ct4rel->{$a}->{$scol}
|
||||
}else{
|
||||
$ct4rel->{$b}->{$scol} cmp $ct4rel->{$a}->{$scol}
|
||||
}
|
||||
}else{
|
||||
if ($scol =~ /barcode|int/) {
|
||||
$ct4rel->{$a}->{$scol} <=> $ct4rel->{$b}->{$scol}
|
||||
}else{
|
||||
$ct4rel->{$a}->{$scol} cmp $ct4rel->{$b}->{$scol}
|
||||
}
|
||||
}
|
||||
} keys(%$ct4rel)){
|
||||
|
||||
my $set_style = "";
|
||||
$nr++;
|
||||
#Tablecontent (parameter)
|
||||
print $q->Tr(),"\n";
|
||||
|
||||
if($node_meta->{tpl_id} != 198){
|
||||
print $q->td({-class=>'tdtxt',-style=>"$set_style"},""),"\n";
|
||||
print $q->td({-class=>'tdint',-style=>"$set_style"},""),"\n";
|
||||
}
|
||||
my $k=0;
|
||||
foreach (@tpl_order){
|
||||
$k++;
|
||||
my ($key,$val,$size) = split /=/,$_;
|
||||
$size = 15 if($size =~ /area/);
|
||||
$size = 2 if($size =~ /checkbox/);
|
||||
my $tdclass = "tdtxt";
|
||||
my $tdstyle = "text-align:left;";
|
||||
if($size =~ /\w\+\w/){
|
||||
$size = 5;
|
||||
}elsif($key =~ /barcode|c_id|ct_name|int|state|sort|public/){
|
||||
$tdclass = "tdint";
|
||||
$tdstyle = "text-align:right;max-width:8em;$size px;";
|
||||
}
|
||||
$ct4rel->{$id}->{$key} = $lb->time4de($ct4rel->{$id}->{$key},"1") if($key =~ /time/);
|
||||
$ct4rel->{$id}->{$key} = $q->unescapeHTML("$ct4rel->{$id}->{$key}");
|
||||
$ct4rel->{$id}->{$key} = $lb->newline($ct4rel->{$id}->{$key},"","");
|
||||
if($key eq "owner"){
|
||||
my $u_name = $ct4rel->{$id}->{owner};
|
||||
foreach my $ctu_id (keys (%$ct_users)){
|
||||
if($channel_map->{$u_name}){
|
||||
$u_name = $channel_map->{$u_name};
|
||||
}elsif($ct4rel->{$id}->{owner} eq $ct_users->{$ctu_id}->{c_id}){
|
||||
$u_name = $ct_users->{$ctu_id}->{txt01};
|
||||
}
|
||||
}
|
||||
|
||||
#$u_name = $ct_users->{$ct4rel->{$id}->{$key}}->{txt01} || $ct4rel->{$id}->{$key};
|
||||
print $q->td({-class=>"$tdclass",-style=>"$tdstyle $set_style"},"$u_name"),"\n";
|
||||
}elsif($key eq "barcode" && $node_meta->{ct_table} eq "contentadrpos"){
|
||||
print $q->td({-class=>"$tdclass",-style=>"$tdstyle $set_style"},$q->a({-class=>"linknav3",-href=>"/$users_dms->{fullurl}/Waren/?detail_search=1\&s_barcode=$ct4rel->{$id}->{barcode}",-title=>"zum Rad "},"$ct4rel->{$id}->{barcode}")),"\n";
|
||||
#print $q->td({-class=>"$tdclass",-style=>"$tdstyle $set_style"},$q->a({-class=>"editnav",-href=>"/$users_dms->{fullurl}/Waren/?detail_search=1\&s_barcode=$ct4rel->{$id}->{barcode}",-title=>"zur Liste der Rad $ct4rel->{$id}->{barcode} Servicearbeiten"}, $q->img({-src=>"$varenv{metahost}/glyphicons/glyphicons-440-wrench.png", -style=>'height:1.3em;'}),"$ct4rel->{$id}->{barcode}")),"\n";
|
||||
|
||||
}elsif($key eq "u_id" && $node_meta->{ct_table} eq "users"){
|
||||
my $adref = {
|
||||
table => "contentadr",
|
||||
fetch => "one",
|
||||
template_id => "202",
|
||||
c_id => "$ct4rel->{$id}->{$key}",
|
||||
};
|
||||
my $ctadr = $dbt->fetch_record($dbh,$adref);
|
||||
|
||||
print $q->td({-class=>"$tdclass",-style=>"$tdstyle $set_style width:300px;"},$q->a({-class=>"linknav3",-href=>"?node2edit=editpart\&u_id=$ct4rel->{$id}->{u_id}",-title=>"edit"},"$ctadr->{txt01} - $ctadr->{txt08} ($ct4rel->{$id}->{$key})")),"\n";
|
||||
}elsif($key eq "txt08" && $node_meta->{ct_table} eq "contentadrpos"){
|
||||
my $subject = "sharee.bike feedback";
|
||||
my $body = "Hallo $ct4rel->{$id}->{txt01},\%0A\%0Avielen Dank für Ihre Nachricht \"$ct4rel->{$id}->{txt02}\"";
|
||||
print $q->td({-class=>"$tdclass",-style=>"$tdstyle $set_style"},$q->a({-class=>"editnav",-href=>"mailto:$ct4rel->{$id}->{$key}?subject=$subject&body=$body"},$q->span({-class=>"bi bi-envelope"}," $ct4rel->{$id}->{$key}"))),"\n";
|
||||
}elsif($key =~ /int0[1-8]/ && $node_meta->{ct_table} eq "users"){
|
||||
print $q->td({-class=>"$tdclass",-style=>"$tdstyle $set_style",-nowrap=>1},"$dbt->{copri_conf}->{permission}->{$ct4rel->{$id}->{$key}}"),"\n";
|
||||
}elsif($key =~ /int09/ && $node_meta->{ct_table} eq "users"){
|
||||
print $q->td({-class=>"$tdclass",-style=>"$tdstyle $set_style",-nowrap=>1},"$dbt->{copri_conf}->{access}->{$ct4rel->{$id}->{$key}}"),"\n";
|
||||
}else{
|
||||
print $q->td({-class=>"$tdclass",-style=>"$tdstyle $set_style"},"$ct4rel->{$id}->{$key}"),"\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
print $q->end_table;
|
||||
|
||||
my $offset_nr = $offset + $nr;
|
||||
print $q->div({-style=>'float:left;padding:0.5em;'},"Zeile: $offset - $offset_nr");
|
||||
|
||||
#backward | forward
|
||||
print "<div style='padding:0.5em;'>\n";
|
||||
print $q->a({-class=>"linknav",-href=>"?go=backward_list;offset=$offset;limit=$limit",-title=>''},"< zurück ... ") if($offset >= $limit);
|
||||
print $q->a({-class=>"linknav",-href=>"?go=forward_list;offset=$offset;limit=$limit",-title=>''}," ... vorwärts >") if($nr >= $limit-10); #if($rows > $limit && $nr > 0);
|
||||
print "</div>\n";
|
||||
|
||||
print $q->end_form,"\n";
|
||||
print "</div>\n";
|
||||
my $debug = "(ct_table: $node_meta->{ct_table} | main_id: $node_meta->{main_id} | template_id: $node_meta->{template_id})";
|
||||
print $q->div({-style=>'position:fixed;bottom:1%;font-size:13px;'},"$debug"),"\n" if($users_dms->{u_id} eq $varenv{superu_id});
|
||||
|
||||
return $return;
|
||||
}
|
||||
|
||||
1;
|
559
copri4/main/src/Tpl/TransPositionen.pm
Normal file
559
copri4/main/src/Tpl/TransPositionen.pm
Normal file
|
@ -0,0 +1,559 @@
|
|||
package TransPositionen;
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
# Copyright (c) Rainer Gümpelein, TeilRad GmbH
|
||||
#
|
||||
#
|
||||
use strict;
|
||||
use warnings;
|
||||
use POSIX;
|
||||
use CGI;
|
||||
use CGI::Carp qw(fatalsToBrowser);
|
||||
use CGI ':standard';
|
||||
use DateTime;
|
||||
use DateTime::Format::Pg;
|
||||
use Date::Calc::Object qw(:ALL);
|
||||
use Scalar::Util qw(looks_like_number);
|
||||
use Lib::Config;
|
||||
use Mod::Buttons;
|
||||
use Mod::Libenz;
|
||||
use Mod::Libenzdb;
|
||||
use Mod::DBtank;
|
||||
use Mod::APIfunc;
|
||||
|
||||
sub new {
|
||||
my $class = shift;
|
||||
my $self = {};
|
||||
bless($self,$class);
|
||||
return $self;
|
||||
}
|
||||
|
||||
#Template
|
||||
sub tpl(){
|
||||
my $self=shift;
|
||||
my ($node_meta,$users_dms,$set_main_id,$main_id,$rel_id,$c_id,$u_id,$lang,$return,$node_name) = @_;
|
||||
my $q = new CGI;
|
||||
my $cf = new Config;
|
||||
my $lb = new Libenz;
|
||||
my $db = new Libenzdb;
|
||||
my $dbt = new DBtank;
|
||||
my $apif = new APIfunc;
|
||||
my $but = new Buttons;
|
||||
my %varenv = $cf->envonline();
|
||||
my $script = $q->script_name();
|
||||
my $path_info = $q->path_info();
|
||||
my $path = $path_info;
|
||||
#with meta_host,
|
||||
if("$varenv{metahost}"){
|
||||
$path = "$script" . "$path_info";
|
||||
$script="";
|
||||
}
|
||||
my $users = $db->select_users($u_id);
|
||||
my %ib = $but->ibuttons();
|
||||
my $today = strftime("%d.%m.%Y",localtime(time));
|
||||
my $dbh = "";
|
||||
my $channel_map = $dbt->channel_map();
|
||||
|
||||
my $mapref = {};
|
||||
my $ct_users = $dbt->users_map($dbh,$mapref);#get serviceAPP and DMS users from contentadr
|
||||
|
||||
my $line_count2;
|
||||
my $k=0;
|
||||
my $spart_ct_name = $R::spart_ct_name || "";
|
||||
my $c_idpos = $R::c_idpos || $R::pos_id || "";
|
||||
|
||||
my $ctf = $db->get_content1("contentuser",$dbt->{shareedms_conf}->{parent_id});
|
||||
my $ctt = $db->get_content1("contenttrans",$c_id);
|
||||
|
||||
my $umst1619 = $lb->umst_breaking($ctt,"");
|
||||
|
||||
my $ctadr = $db->get_content1("contentadr",$ctt->{int10});
|
||||
my $buchen_mtime = $lb->time4de($ctt->{mtime});
|
||||
my $vibuchen_mtime = "";
|
||||
$vibuchen_mtime = "Payone post " . $lb->time4de($ctt->{pay_time},1) . " . " if($ctt->{pay_time});
|
||||
|
||||
my $tpl = $db->get_tpl($ctf->{txt36});
|
||||
my @tpl_order = split /,/,$tpl->{tpl_order};
|
||||
|
||||
my $txt20 = $R::txt20 || $ctt->{txt20} || "";#Leistungsdatum
|
||||
my $int05 = $R::int05 || $ctt->{int05} || "";#manuell
|
||||
my $max_timestamp = "210001012359";
|
||||
if($ctf->{txt80} && $txt20 =~ /(\d{2})\.(\d{2})\.(\d{4})$/){
|
||||
$max_timestamp = $3 . $2 . $1 . "2359";
|
||||
}elsif($ctf->{txt80} =~ /(\d{2})\.(\d{2})\.(\d{4})$/){
|
||||
$max_timestamp = $3 . $2 . $1 . "2359";
|
||||
}
|
||||
my $max_sum = $ctf->{int03} || "10000";
|
||||
my $cttpos = { c_id => 0 };
|
||||
my $rows = 0;
|
||||
($cttpos,$rows) = $db->collect_contentpos("contenttrans",$c_id) if($c_id);
|
||||
my $tpath; #Terminal target-path
|
||||
if($users->{transaction_uri} =~ /Verkauf|Verleih|Faktur/){
|
||||
$tpath = "$users->{transaction_uri}";
|
||||
}elsif("$users->{fullurl}"){
|
||||
$tpath = "$script/$users->{fullurl}/$users->{kind_of_trans}";
|
||||
}
|
||||
if($varenv{orga} eq "dms"){#obsolete after migrating lx-rad and mobile ...
|
||||
print<<EOF
|
||||
<style>
|
||||
.ui-autocomplete {
|
||||
text-align:left;
|
||||
font-size:14px;
|
||||
background:#eeeeee;
|
||||
border:1px solid silver;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script>
|
||||
\$(function() {
|
||||
\$('#json_select').autocomplete({
|
||||
source: '/ajax_json?main_id=$dbt->{shareedms_conf}->{parent_id}&table=content',
|
||||
minLength: 2,
|
||||
select: function(event, ui) {
|
||||
\$('#spart_ct_name').val(ui.item.spart_ct_name);
|
||||
\$('#c_id').val(ui.item.c_id);
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
EOF
|
||||
;
|
||||
}
|
||||
#print $q->div({ -class=>"ui-widget"}, $q->label({ -for=>"birds"},"Birds: "),$q->input({ -id=>"birds"},"")),"\n";
|
||||
|
||||
|
||||
print $q->start_table({-class=>'list', -border=>'0', -width=>'100%',-align=>'left', -cellpadding=>'3', -cellspacing=>'0'});
|
||||
|
||||
|
||||
#my $action_sort = "itime";
|
||||
#Parts Header
|
||||
print $q->start_form(-name=>'spartform');
|
||||
print $q->Tr(); $line_count2++;
|
||||
print $q->th($but->singlesubmit("select_part","*"),"\n");
|
||||
foreach (@tpl_order){
|
||||
my ($key,$val) = split /=/,$_;
|
||||
$k++ if($val);
|
||||
if("$key" eq "ct_name"){
|
||||
my $ctpos;
|
||||
print $q->hidden(-name=>'c_id4trans', -override=>'1', -value=>"$c_id");
|
||||
print $q->hidden(-id=>'c_id', -name=>"c_id", -override=>'1');
|
||||
print $q->hidden(-id=>'spart_ct_name', -name=>"spart_ct_name", -override=>'1');
|
||||
print $q->th($q->textfield(-class=>'etxt',-style=>'height:19px;width:140px;font-size:1.3em;text-align:right;',-id=>"json_select",-name=>"json_select",-value=>"", -override=>'1',-size=>"25",-maxlength=>50, -placeholder=>'Nummer'),"");
|
||||
}
|
||||
if($key =~ /int03/){
|
||||
print $q->th("$val");
|
||||
}elsif($key =~ /int|txt03/){
|
||||
print $q->th("$val");
|
||||
}elsif($key =~ /txt01/){
|
||||
|
||||
my $cal_button = "";
|
||||
my $ter_button = "";
|
||||
my $war_button = "";
|
||||
print $q->th("Beschreibung"),"\n";
|
||||
|
||||
}elsif($key =~ /txt/){
|
||||
print $q->th("$val");
|
||||
}
|
||||
}
|
||||
|
||||
$c_idpos = $1 if($return && $return =~ /pos_id=(\d+)/);
|
||||
print $q->hidden(-name=>'trans2edit', -value=>"transpos", -override=>'1');
|
||||
print $q->hidden(-name=>'offset', -override=>'1', -value=>"$R::offset") if($R::offset);
|
||||
print $q->hidden(-name=>'limit', -override=>'1', -value=>"$R::limit") if($R::limit);
|
||||
print $q->hidden(-name=>'relids', -override=>'1', -value=>"$R::relids") if($R::relids);
|
||||
print $q->end_form,"\n";
|
||||
|
||||
print $q->start_form(-name=>'transposform'),"\n";
|
||||
|
||||
#Tablecontent (buttons and ct_name(primary key))
|
||||
#my $scol = "c_id";#changed to itime because of Storno resorts
|
||||
my $scol = "itime";
|
||||
my $sum_parts0=0;
|
||||
my $sum_parts7=0;
|
||||
my $sum_parts19=0;
|
||||
my $diff7 = 100 + 7;
|
||||
my $diff19 = 100 + $umst1619;
|
||||
my $sum_umst7=0;
|
||||
my $sum_umst19=0;
|
||||
my $i=0;
|
||||
my $accounting_start;
|
||||
my $accounting_end;
|
||||
|
||||
#foreach my $id (sort { $cttpos->{$b}->{$scol} <=> $cttpos->{$a}->{$scol} } keys(%$cttpos)){
|
||||
foreach my $id (sort { $cttpos->{$b}->{$scol} cmp $cttpos->{$a}->{$scol} } keys(%$cttpos)){
|
||||
my $set_style="";
|
||||
my $gesamt="0";
|
||||
my $occupied_style = "";
|
||||
my $time_style = "";
|
||||
#$occupied_style = "color:#ff1493" if($cttpos->{$id}->{txt10} =~ /occupied|requested|canceled/);
|
||||
$occupied_style = "color:#ff1493" if($cttpos->{$id}->{int10} == 2 ||$cttpos->{$id}->{int10} == 3 || $cttpos->{$id}->{int10} == 6);
|
||||
|
||||
my $cttpos_timestamp = $1 . $2 . $3 . "0000" if($cttpos->{$id}->{itime} =~ /(\d+)\-(\d+)\-(\d+)/);
|
||||
#max. Rechnungspositionen
|
||||
if(($cttpos_timestamp <= $max_timestamp) && ($sum_parts19 <= $max_sum)){
|
||||
$i++;
|
||||
#print "$i (($id: $cttpos_timestamp <= $max_timestamp) && ($sum_parts19 <= $max_sum))<br>";
|
||||
if($i==1){
|
||||
$accounting_end = "$3.$2.$1" if($cttpos->{$id}->{itime} =~ /(\d+)\-(\d+)\-(\d+)/);
|
||||
}else{
|
||||
$accounting_start = "$3.$2.$1" if($cttpos->{$id}->{itime} =~ /(\d+)\-(\d+)\-(\d+)/);
|
||||
}
|
||||
#print "$accounting_start - $accounting_end<br>";
|
||||
|
||||
my @line_txt01 = split(/\n/,$cttpos->{$id}->{txt01});
|
||||
if($cttpos->{$id}->{int02} != 0){
|
||||
$line_count2++;
|
||||
#$line_count2 += scalar(@line_txt01);
|
||||
}
|
||||
my ($s_date,$s_dd,$s_mo,$s_yy,$s_hh,$s_mi,$e_date,$e_yy,$e_mo,$e_dd,$e_hh,$e_mi);
|
||||
my $einzel = $cttpos->{$id}->{int02};
|
||||
my $menge = $cttpos->{$id}->{int03} || 0;
|
||||
|
||||
#Make date and time
|
||||
if($cttpos->{$id}->{start_time} && $cttpos->{$id}->{end_time}){
|
||||
($s_yy,$s_mo,$s_dd,$s_hh,$s_mi) = $lb->split_date($cttpos->{$id}->{start_time});
|
||||
($e_yy,$e_mo,$e_dd,$e_hh,$e_mi) = $lb->split_date($cttpos->{$id}->{end_time});
|
||||
}
|
||||
|
||||
|
||||
my $dt1 = DateTime->new(year => 2018, month => 3, day => 20);
|
||||
my $dt0 = $dt1;
|
||||
my $dt2 = $dt1;
|
||||
$dt0 = DateTime::Format::Pg->parse_datetime($cttpos->{$id}->{start_time}) if($cttpos->{$id}->{start_time});
|
||||
$dt2 = DateTime::Format::Pg->parse_datetime($cttpos->{$id}->{end_time}) if($cttpos->{$id}->{end_time});
|
||||
#if($dt2 < $dt0){
|
||||
#$time_style="color:red;";
|
||||
#}
|
||||
|
||||
if(looks_like_number($einzel) && $einzel != 0 && looks_like_number($menge) && $menge != 0){
|
||||
$gesamt = $einzel * $menge;
|
||||
|
||||
my $rabatt_val = $cttpos->{$id}->{int07} || "";
|
||||
if($rabatt_val != 0){
|
||||
my $rabatt_eur = $rabatt_val;
|
||||
$rabatt_eur = $einzel * $menge * $rabatt_val/100 if($cttpos->{$id}->{int08} != 1);#wenn int08 != 1 alias €
|
||||
$gesamt = $einzel * $menge - $rabatt_eur;
|
||||
}
|
||||
}
|
||||
|
||||
$gesamt = $lb->round($gesamt);
|
||||
$gesamt = $lb->cashme($gesamt);
|
||||
$ctf->{txt13} = $1 if($ctf->{txt13} =~ /(\d+)/);
|
||||
if($node_name =~ /steuerfrei/){#dirty hack
|
||||
$sum_parts0 += $gesamt;
|
||||
}elsif("$cttpos->{$id}->{int05}" =~ /\d/){
|
||||
$sum_parts0 += $gesamt if("$cttpos->{$id}->{int05}" == "0");
|
||||
$sum_parts7 += $gesamt if("$cttpos->{$id}->{int05}" == "7");
|
||||
#$sum_parts19 += $gesamt if("$cttpos->{$id}->{int05}" == "19");
|
||||
$sum_parts19 += $gesamt if($cttpos->{$id}->{int05} >= 16);
|
||||
}else{
|
||||
#print "yyy $gesamt $ctf->{txt13} |";
|
||||
$sum_parts0 += $gesamt if("$ctf->{txt13}" == "0");
|
||||
$sum_parts7 += $gesamt if("$ctf->{txt13}" == "7");
|
||||
$sum_parts19 += $gesamt if("$ctf->{txt13}" >= "16");
|
||||
}
|
||||
|
||||
#1. Spalte
|
||||
print $q->Tr(),"\n";
|
||||
print "<td class='tdtxt'>";
|
||||
if(($c_idpos == $cttpos->{$id}->{c_id}) && ($R::trans2edit && $R::trans2edit =~ /transpos/)){
|
||||
print $q->hidden(-name=>'c_idpos', -value=>"$cttpos->{$id}->{c_id}", -override=>'1');
|
||||
print $q->hidden(-name=>'cc_id', -value=>"$cttpos->{$id}->{cc_id}", -override=>'1');
|
||||
print $q->hidden(-name=>'c_id4trans', -override=>'1', -value=>"$c_id");
|
||||
print $but->singlesubmit2("ct_trans","save_pos","$ib{save_pos}","","ebutton5"),
|
||||
$but->singlesubmit2("ct_trans","delete_pos","$ib{delete_pos}"),"\n";
|
||||
}elsif(!$ctt->{close_time}){
|
||||
print $q->a({-class=>"editnav",-href=>"$tpath?trans2edit=transpos\&c_idpos=$cttpos->{$id}->{c_id}\&c_id4trans=$c_id\&owner=$users->{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=>"$script/$users->{fullurl}/$calpath/?cttpos_id=$cttpos->{$id}->{c_id}",-title=>"Im $calpath öffnen"},"<br /><br />ID $cttpos->{$id}->{c_id}"),"\n";
|
||||
print "</td>\n";
|
||||
|
||||
#Tablecontent (parameter)
|
||||
foreach (@tpl_order){
|
||||
my ($key,$val,$inputsize) = split /=/,$_;
|
||||
$cttpos->{$id}->{$key} = $q->unescapeHTML($cttpos->{$id}->{$key});
|
||||
$cttpos->{$id}->{$key} = $lb->newline($cttpos->{$id}->{$key},"",$R::trans2edit) if($R::trans2edit);
|
||||
my $ct_pos = "$cttpos->{$id}->{ct_name}";
|
||||
my $txtstyle = "text-align:left;min-width:150px;";
|
||||
my $isize = "30";
|
||||
$isize = $inputsize if($inputsize);
|
||||
if($key =~ /int|txt03/){ #für zahlen etwas kleiner
|
||||
$txtstyle = "text-align:right;min-width:50px;";
|
||||
$isize = "5";
|
||||
}
|
||||
if(($c_idpos == $cttpos->{$id}->{c_id}) && ($R::trans2edit && $R::trans2edit =~ /transpos/)){
|
||||
if($key =~ /ct_name/){
|
||||
print $q->td({-class=>'element',-style=>"$set_style text-align:right;"}, $q->textfield(-class=>'etxt',-style=>"text-align:right;min-width:120px;",-name=>"ct_name",-default=>"$ct_pos", -override=>'1',-size=>10,-readonly=>'1'),"\n");
|
||||
}elsif($key =~ /int03/){
|
||||
print $q->td({-colspan=>'1',-class=>'element',-style=>"$txtstyle $set_style"},$q->textfield(-class=>'etxt',-style=>"$txtstyle",-name=>"col_$key",-default=>"$menge", -override=>'1',-size=>"$isize",-maxlength=>10, -autofocus=>1),"\n");
|
||||
}elsif($key =~ /int02/){
|
||||
print $q->td({-class=>'element',-style=>"$txtstyle $set_style"},$q->textfield(-class=>'etxt',-style=>"$txtstyle",-name=>"col_$key",-default=>"$einzel", -override=>'1',-size=>"$isize",-maxlength=>100),"\n");
|
||||
}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=>'element',-style=>'text-align:right;padding:0.1em 0.5em;',-nowrap=>"1"},"$gesamt €");
|
||||
}elsif($key =~ /txt01/){
|
||||
if($cttpos->{$id}->{int09} && $cttpos->{$id}->{$key} !~ /Manuell/){
|
||||
$cttpos->{$id}->{$key} .= "\nManuell bearbeitet\n";
|
||||
}
|
||||
print "<td class='element' style='$txtstyle $set_style;background-color: #ededed;$occupied_style;'\n>";
|
||||
print $q->textarea(-class=>'autos',-style=>"border: 1px solid #ededed;background-color: #ededed;",-name=>"col_$key",-default=>"$cttpos->{$id}->{$key}", -override=>'1',-rows=>"1",-cols=>65),"<br />\n";
|
||||
|
||||
if($cttpos->{$id}->{int09}){#2020-12-07 Verleihräder werden anhand der TarifNr als solches erkannt
|
||||
print $q->span({-style=>"$txtstyle $set_style"},
|
||||
"Tarif Nr.: ", $q->textfield(-class=>'etxt',-name=>"int09",-default=>"$cttpos->{$id}->{int09}",-size=>"5",-maxlength=>5),
|
||||
"Tarif Text", $q->textfield(-class=>'etxt',-name=>"txt04",-default=>"$cttpos->{$id}->{txt04}",-size=>"30",-maxlength=>50)),"<br />\n";
|
||||
|
||||
print $q->span({-style=>"$txtstyle $set_style"},
|
||||
"Endstation: ", $q->textfield(-class=>'etxt',-name=>"int04",-default=>"$cttpos->{$id}->{int04}",-size=>"5",-maxlength=>40),
|
||||
"GPS: ", $q->textfield(-class=>'etxt',-name=>"txt06",-default=>"$cttpos->{$id}->{txt06}",-size=>"35",-maxlength=>40)),"<br />\n";
|
||||
|
||||
print $q->span({-style=>"$txtstyle $set_style"},"Mietzeit: ",
|
||||
$q->textfield(-id=>'datepicker1',-class=>'etxt',-name=>"start_date",-default=>"$s_dd.$s_mo.$s_yy",-size=>"10",-maxlength=>10),
|
||||
$q->textfield(-class=>'etxt',-name=>"s_hh",-default=>"$s_hh",-size=>"2",-maxlength=>2),":",
|
||||
$q->textfield(-class=>'etxt',-name=>"s_mi",-default=>"$s_mi",-size=>"2",-maxlength=>2)," – ",
|
||||
$q->textfield(-id=>'datepicker2',-class=>'etxt',-name=>"end_date",-default=>"$e_dd.$e_mo.$e_yy",-size=>"10",-maxlength=>10),
|
||||
$q->textfield(-class=>'etxt',-name=>"e_hh",-default=>"$e_hh",-size=>"2",-maxlength=>2),":",
|
||||
$q->textfield(-class=>'etxt',-name=>"e_mi",-default=>"$e_mi",-size=>"2",-maxlength=>2)),"\n";
|
||||
}
|
||||
|
||||
print "</td>\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");
|
||||
#}elsif($key =~ /save/){
|
||||
#print $q->td({-class=>'element',-style=>"$set_style"},$but->singlesubmit2("ct_trans","save_pos","$ib{save_pos}"));
|
||||
}elsif($key =~ /int/){
|
||||
print $q->td({-class=>'tdint',-nowrap=>"1"}," \n");
|
||||
}
|
||||
}else{
|
||||
if($key =~ /ct_name/){
|
||||
#print $q->td({-class=>'tdint',-style=>"min-width:60px;"},"$ct_pos");
|
||||
my $stamm_style = "background-color:#98c13b;padding:2px;";
|
||||
my $article = $cttpos->{$id}->{ct_name};
|
||||
if($cttpos->{$id}->{int09}){
|
||||
print $q->td({-class=>'tdint',-style=>"min-width:60px;padding-top:5px;"}, $q->a({-class=>"linknav3",-style=>"$stamm_style",-href=>"$script/$users->{fullurl}/Waren/?detail_search=1&s_barcode=$cttpos->{$id}->{barcode}",-title=>"Im Warenstamm"},"$article")),"\n";
|
||||
}else{
|
||||
print $q->td({-class=>'tdint'},"$article"),"\n";
|
||||
}
|
||||
}elsif($key =~ /int02/){
|
||||
$einzel =~ s/\./,/;
|
||||
print $q->td({-class=>'tdint'},"$einzel"),"\n";
|
||||
}elsif($key =~ /int03/){
|
||||
$menge =~ s/\./,/;
|
||||
print $q->td({-colspan=>'1',-class=>'tdint'},"$menge"),"\n";
|
||||
}elsif($key =~ /int04/){
|
||||
$gesamt =~ s/\./,/;
|
||||
print $q->td({-class=>'tdint',-nowrap=>"1"},"$gesamt €"),"\n";
|
||||
}elsif($key =~ /int02/){
|
||||
print $q->td({-class=>'tdint'},"$einzel"),"\n";
|
||||
}elsif($key =~ /int07/){
|
||||
my $proz="";
|
||||
$proz = "%" if($cttpos->{$id}->{$key} && $cttpos->{$id}->{$key} != 0);
|
||||
$proz = "€" if($cttpos->{$id}->{$key} && $cttpos->{$id}->{$key} != 0 && $cttpos->{$id}->{int08} && $cttpos->{$id}->{int08} == 1);
|
||||
print $q->td({-class=>'tdint',-nowrap=>"1"},"$cttpos->{$id}->{$key} $proz"),"\n";
|
||||
}elsif($key =~ /txt03/){
|
||||
print $q->td({-class=>'tdint'},"$cttpos->{$id}->{$key}"),"\n";
|
||||
}elsif($key =~ /txt01/){
|
||||
$cttpos->{$id}->{$key} = $q->unescapeHTML("$cttpos->{$id}->{$key}");
|
||||
$cttpos->{$id}->{$key} = $lb->newline($cttpos->{$id}->{$key},"","");
|
||||
print "<td class='tdtxt', style='$occupied_style;'>\n";
|
||||
if($cttpos->{$id}->{barcode} && $cttpos->{$id}->{int09}){#bike with tariff-nr
|
||||
my $u_name = $cttpos->{$id}->{owner};
|
||||
my $u_name_end = $cttpos->{$id}->{owner_end};
|
||||
foreach my $ctu_id (keys (%$ct_users)){
|
||||
if($channel_map->{$u_name}){
|
||||
$u_name = $channel_map->{$u_name};
|
||||
}elsif($cttpos->{$id}->{owner} eq $ct_users->{$ctu_id}->{c_id}){
|
||||
$u_name = $ct_users->{$ctu_id}->{txt01};
|
||||
}
|
||||
if($channel_map->{$u_name_end}){
|
||||
$u_name_end = $channel_map->{$u_name_end};
|
||||
}elsif($cttpos->{$id}->{owner_end} eq $ct_users->{$ctu_id}->{c_id}){
|
||||
$u_name_end = $ct_users->{$ctu_id}->{txt01};
|
||||
}
|
||||
}
|
||||
if($cttpos->{$id}->{itime} =~ /(\d{4})-(\d{2})-(\d{2})\s(\d{2}):(\d{2})/){
|
||||
print $q->span("$dbt->{copri_conf}->{bike_state}->{$cttpos->{$id}->{int10}} → $dbt->{copri_conf}->{lock_state}->{$cttpos->{$id}->{int20}} → $u_name / $u_name_end"),"\n";
|
||||
print "<br />\n";
|
||||
}
|
||||
}
|
||||
if($cttpos->{$id}->{txt01} || $cttpos->{$id}->{int09}){
|
||||
#$line_count2++;
|
||||
$cttpos->{$id}->{txt01} =~ s/fixed/\<span style='color:red'\>fixed\<\/span\>/;
|
||||
$cttpos->{$id}->{txt01} =~ s/defect/\<span style='color:red'\>defect\<\/span\>/;
|
||||
my $bike="";
|
||||
my $tariff = "";
|
||||
$bike = "$cttpos->{$id}->{$key}" if($cttpos->{$id}->{$key});
|
||||
$tariff = ", Tarif: $cttpos->{$id}->{int09} $cttpos->{$id}->{txt04}" if($cttpos->{$id}->{txt04});
|
||||
print $q->span("$bike $tariff<br />"),"\n";
|
||||
}
|
||||
if($cttpos->{$id}->{int06} || $cttpos->{$id}->{int04}){
|
||||
print $q->span("Start/End Station: $cttpos->{$id}->{int06} / $cttpos->{$id}->{int04}, GPS: $cttpos->{$id}->{txt06}"),"\n";
|
||||
}
|
||||
if($cttpos->{$id}->{start_time}){
|
||||
print "<br />\n";
|
||||
print $q->span({-style=>"$time_style"}, "Mietzeit: $s_dd.$s_mo.$s_yy $s_hh:$s_mi – $e_dd.$e_mo.$e_yy $e_hh:$e_mi"),"\n";
|
||||
}
|
||||
print "</td>\n";
|
||||
}elsif($key =~ /txt/){
|
||||
print $q->td({-class=>'tdtxt'},"$cttpos->{$id}->{$key}");
|
||||
}elsif($key =~ /int/){
|
||||
print $q->td({-class=>'tdint',-nowrap=>"1"}," \n");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}#foreach end
|
||||
|
||||
if($sum_parts7 != "0"){
|
||||
$sum_umst7 = $sum_parts7 / $diff7 * 7;
|
||||
$sum_umst7 = $lb->round($sum_umst7);
|
||||
}
|
||||
if($sum_parts19 != "0"){
|
||||
$sum_umst19 = $sum_parts19 / $diff19 * $umst1619;
|
||||
$sum_umst19 = $lb->round($sum_umst19);
|
||||
}
|
||||
my $sum_netto7 = $sum_parts7 - $sum_umst7;
|
||||
my $sum_netto19 = $sum_parts19 - $sum_umst19;
|
||||
$sum_netto7 = $lb->cashme($sum_netto7);
|
||||
$sum_netto19 = $lb->cashme($sum_netto19);
|
||||
my $sum_nettoall = $sum_parts0 + $sum_netto7 + $sum_netto19;
|
||||
$sum_nettoall = $lb->round($sum_nettoall);
|
||||
$sum_nettoall = $lb->cashme($sum_nettoall,",");
|
||||
my $sum_paid = $sum_parts0 + $sum_parts7 + $sum_parts19;
|
||||
$sum_paid = $lb->round($sum_paid);
|
||||
my $sum_preauth = $sum_paid || 0;
|
||||
$sum_parts0 = $lb->cashme($sum_parts0,",");
|
||||
$sum_parts7 = $lb->cashme($sum_parts7,",");
|
||||
$sum_parts19 = $lb->cashme($sum_parts19,",");
|
||||
$sum_umst7 = $lb->cashme($sum_umst7,",");
|
||||
$sum_umst19 = $lb->round($sum_umst19);
|
||||
$sum_umst19 = $lb->cashme($sum_umst19,",");
|
||||
$sum_paid = $lb->cashme($sum_paid,",");
|
||||
|
||||
my $n="5";
|
||||
my $m= 1 + $k - $n;
|
||||
$m++ if($users->{kind_of_trans} =~ /Faktur|Verleih/);
|
||||
print "<tr><td colspan='$m'> </td><td style='font-size:1em;' colspan='$n'>\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(" ");
|
||||
|
||||
#if($users->{kind_of_trans} ne "Einkauf" && $node_name !~ /steuerfrei/){
|
||||
if($node_name !~ /steuerfrei/){
|
||||
print $q->Tr("\n"); $line_count2++;
|
||||
print $q->td({-class=>'tdint'},"Nettobetrag:");
|
||||
print $q->td({-class=>'tdint',-nowrap=>"1"},"$sum_nettoall €");
|
||||
|
||||
if($sum_parts0 != "0"){
|
||||
print $q->Tr("\n");$line_count2++;
|
||||
print $q->td({-class=>'tdint',-nowrap=>"1"},"0% UmSt auf $sum_parts0 €:");
|
||||
print $q->td({-class=>'tdint',-nowrap=>"1"},"0,00 €");
|
||||
}
|
||||
if($sum_netto7 != "0"){
|
||||
print $q->Tr("\n");$line_count2++;
|
||||
print $q->td({-class=>'tdint',-nowrap=>"1"},"7% UmSt auf $sum_netto7 €:");
|
||||
print $q->td({-class=>'tdint',-nowrap=>"1"},"$sum_umst7 €");
|
||||
}
|
||||
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"},"$sum_umst19 €");
|
||||
}
|
||||
}
|
||||
my $summe = "Summe";
|
||||
#$summe = "Nettosumme" if($users->{kind_of_trans} eq "Einkauf");
|
||||
print $q->Tr("\n");$line_count2++;
|
||||
print $q->td({-class=>'tdsum'},"<b>$summe:</b>");
|
||||
print $q->td({-class=>'tdint',-nowrap=>"1"},"<b>$sum_paid €<b/>");
|
||||
print $q->hidden(-name=>'sum_paid', -override=>'1',-value=>"$sum_paid");
|
||||
|
||||
print $q->end_table;
|
||||
print "</td><td> </td>";
|
||||
print "</tr>";
|
||||
print $q->end_table;
|
||||
|
||||
print $q->hidden(-name=>'owner', -override=>'1', -value=>"$users->{u_id}");
|
||||
print $q->hidden(-name=>'offset', -override=>'1', -value=>"$R::offset") if($R::offset);
|
||||
print $q->hidden(-name=>'c_id4trans', -override=>'1', -value=>"$c_id");
|
||||
print $q->hidden(-name=>'offset', -override=>'1', -value=>"$R::offset") if($R::offset);
|
||||
print $q->hidden(-name=>'limit', -override=>'1', -value=>"$R::limit") if($R::limit);
|
||||
print $q->hidden(-name=>'relids', -override=>'1', -value=>"$R::relids") if($R::relids);
|
||||
|
||||
$set_main_id=$main_id if($main_id && $main_id > "300000");
|
||||
print $q->hidden(-name=>'set_main_id', -value=>"$set_main_id", -override=>'1');
|
||||
|
||||
|
||||
#if(!$ctt->{close_time} && $varenv{Zahlungsweise} && $users->{u_id} == $dbt->{copri_conf}->{superu_id}){
|
||||
if($users_dms->{int03} == 2){
|
||||
#only if user is also a primary DMS user with invoice rw
|
||||
my $dbh_primary = $dbt->dbconnect_extern("sharee_primary");
|
||||
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->{int03} == 2 && !$ctt->{close_time} && $varenv{Zahlungsweise}){
|
||||
my @_paymentstate = split(/\|/,$varenv{Zahlungsweise});
|
||||
push @_paymentstate, "";
|
||||
my $kind_of_payment = "";
|
||||
if($ctadr->{int03} == 1 && ($ctadr->{ct_name} =~ /PO-\d+/ || $ctadr->{ct_name} =~ /TM-\d+/)){
|
||||
$kind_of_payment = "$_paymentstate[0]";
|
||||
}else{
|
||||
undef $_paymentstate[0];
|
||||
}
|
||||
if($ctadr->{int03} == 2 && length($ctadr->{ct_name}) >= 19){
|
||||
$kind_of_payment = "$_paymentstate[1]";
|
||||
}else{
|
||||
undef $_paymentstate[1];
|
||||
}
|
||||
$kind_of_payment = "$ctt->{state}" if($ctt->{state});
|
||||
|
||||
print $q->hidden(-name=>'printer_id', -value=>"PDF - Normalpapier", -override=>'1');
|
||||
my $send_invoice_checkbox = 1;
|
||||
$send_invoice_checkbox = 0 if($ctt->{txt30});
|
||||
print $q->div({-class=>'element',-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","150px",$kind_of_payment,@_paymentstate),"\n") if($users->{kind_of_trans} =~ /Verkauf|Verleih|Faktur/);
|
||||
}
|
||||
}
|
||||
|
||||
my $praefix = "$ctt->{txt00}-$varenv{praefix}";
|
||||
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} eq "1");
|
||||
print $q->div({-style=>"float:right;padding:0.71em;font-size:0.81em;$style"},"[<span style='color:red;'>$opos</span> $vibuchen_mtime Gebucht $ctt->{int01} € \"$ctt->{state}\"]") if($ctt->{state});
|
||||
}
|
||||
print $q->end_form;
|
||||
print $q->div({-style=>"clear:both;height:0.1px;"},""),"\n";
|
||||
if($ctt->{txt30}){
|
||||
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->{u_id} == $dbt->{copri_conf}->{superu_id});
|
||||
print $q->end_form;
|
||||
}
|
||||
|
||||
if( -f "$varenv{pdf}/$praefix-$ctt->{ct_name}.pdf" && $varenv{metahost}){
|
||||
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"));
|
||||
}
|
||||
|
||||
|
||||
if($ctt->{state} && $ctt->{state} =~ /payone/ && $ctt->{txt28} && $ctt->{txt28} =~ /error/i){
|
||||
print $q->div({-style=>"clear:both;padding:0.5em;font-size:0.81em;width:98%;text-align:right;color:red;"}, "Payone error: $ctt->{txt28}"),"\n";
|
||||
}elsif($ctt->{txt28} =~ /settleaccount=yes/i){
|
||||
print $q->div({-style=>"clear:both;padding:0.5em;font-size:0.81em;width:98%;text-align:right;color:green;"}, "Payone SEPA-Lastschrifteinzug war erfolgreich"),"\n";
|
||||
}
|
||||
|
||||
$db->updater("contenttrans","c_id","$c_id","txt20","$accounting_start - $accounting_end","","","","","no_time") if(!$int05 && $accounting_start && $accounting_end);
|
||||
$db->updater("contenttrans","c_id","$c_id","int15","$sum_preauth","","","","","no_time") if($sum_preauth || $sum_preauth == 0);
|
||||
return "$line_count2";
|
||||
}
|
||||
1;
|
Loading…
Add table
Add a link
Reference in a new issue