Faktura warning workflow refactor

This commit is contained in:
ragu 2023-02-10 12:04:30 +01:00
parent 8547c6efa4
commit 814692903f
11 changed files with 175 additions and 160 deletions

View file

@ -509,11 +509,12 @@ div#Oline {
}
.tdval5 {
padding:0.5em 1em;
margin:0;
vertical-align: top;
text-align: left;
min-width:200px;
font-size:0.81em;
background-color:white;
font-size:0.91em;
border: 0px solid green;
background-color:#f2f5de;
}
.tdtxt {
padding:0.2em 0.5em;

View file

@ -80,7 +80,8 @@ sub loop_sharees {
#if($op_name->{operatorApp} && ($users_serviceapp->{u_id} || ($return_merchant->{project_id} eq $op_name->{project}))){
#to reduce request time by ($return_merchant->{project_id} eq "Freiburg") we do it only for shareeweb-sharee.copri.eu
if($op_name->{operatorApp} && ($users_serviceapp->{u_id} || $return_merchant->{project_id} eq "Freiburg" || ($return_merchant->{project_id} eq $op_name->{project}))){
#if($op_name->{operatorApp} && ($users_serviceapp->{u_id} || $return_merchant->{project_id} eq "Freiburg" || ($return_merchant->{project_id} eq $op_name->{project}))){
if($op_name->{operatorApp} && ($users_serviceapp->{u_id} || $return_merchant->{merchant_id} eq $globalconf{website}->{'shareeweb-sharee'}->{merchant_id} || ($return_merchant->{project_id} eq $op_name->{project}))){
#$bw->log("--> LOOP-start ($return_merchant->{merchant_id}) jsonclient loop_sharees $key by operatorApp: $op_name->{operatorApp}, netloc: $netloc if($return_merchant->{project_id} eq $op_name->{project} || $users_serviceapp->{u_id} > 0)\n","","");
$ret_json = $self->fetch_operator_json("$op_name->{operatorApp}/APIjsonserver",$rest);

View file

@ -557,9 +557,14 @@ sub singlesubmit3(){
# without grafic
sub singlesubmit7(){
my $self = shift;
my ($function,$b_name,$title,$set_style,$jscript,$ebutton) = @_;
$ebutton = "ebutton" if(!$ebutton);
my ($b_img,$a_key);
my $function = shift;
my $b_name = shift;
my $title = shift || "";
my $set_style = shift || "";
my $jscript = shift || "";
my $autofocus = shift || "";
my $b_img = "";;
$b_img = "Barcode" if("$b_name" =~ /barcode/);
$b_img = "Copy" if("$b_name" =~ /copy/);
$b_img = "Relate" if("$b_name" =~ /relate/);
@ -567,7 +572,6 @@ sub singlesubmit7(){
$b_img = "Delete" if("$b_name" =~ /delete|remove/);
$b_img = "Delete" if("$b_name" =~ /delete_media/);
$b_img = "Save" if("$b_name" =~ /save|service_done|_contenttverpos/);
$a_key = "y" if("$b_name" =~ /save/);
$b_img = "Text & State Save" if("$b_name" =~ /save_text/);
$b_img = "Delete All" if("$b_name" =~ /delete_all/);
$b_img = "Search" if("$b_name" =~ /search/);
@ -588,11 +592,11 @@ sub singlesubmit7(){
my $button = "<span style='width:25px;height=15px;'>&nbsp;</span>";
if($b_name){
if("$b_name" =~ /delete/){
$button = "<button type='submit' onClick=\"return confirm('Wirklich löschen?')\" class='$ebutton' style='$set_style' name='$function' value='$b_name' title='$title'>$b_img</button>";
$button = "<button type='submit' onClick=\"return confirm('Wirklich löschen?')\" class='ebutton' style='$set_style' name='$function' value='$b_name' title='$title'>$b_img</button>";
}elsif($jscript){
$button = "<button type='submit' onClick='javascript:$jscript' class='$ebutton' style='$set_style' name='$function' value='$b_name' title='$title'>$b_img</button>";
$button = "<button type='submit' onClick='javascript:$jscript' class='ebutton' style='$set_style' name='$function' value='$b_name' title='$title'>$b_img</button>";
}else{
$button = "<button type='submit' class='$ebutton' style='$set_style' name='$function' value='$b_name' title='$title' accesskey='$a_key'>$b_img</button>";
$button = "<button type='submit' class='ebutton' style='$set_style' name='$function' value='$b_name' title='$title' $autofocus>$b_img</button>";
}
}
return $button;

View file

@ -394,7 +394,10 @@ sub handler {
}elsif($R::detail_search && $R::detail_search eq "operator_accounting"){
my $ck4ex = "@R::ck4ex" || "";
$return = $pl->operator_accounting($q,$users_dms,$users_sharee,$R::accounting_type,$ck4ex);
}elsif($R::ct_trans){
}elsif($R::ct_trans || $R::v_abschluss || $R::trans2edit){
if($R::ct_trans ne "open" && looks_like_number($R::c_id4trans) && !$R::v_abschluss && !$R::trans2edit){
$feedb = $pl->save_text2contenttrans($q,$users_dms,$R::c_id4trans);
}
$return .= "|";
$return .= $pre->preinit($users_dms,$lang);#transactions logic
}

View file

@ -165,9 +165,17 @@ sub save_text2contenttrans {
if($ctt->{c_id}){
$u_rows += $dbt->update_record($dbh,$update_ctt,$ctt);
#empty warn_time if warnstate not set
if(!$R::int06){
if(!$R::int06 && $R::txt00 eq "Rechnung"){
$dbt->update_one($dbh,$update_ctt,"warn_time=null",$c_id);
}
if($R::txt22 && $R::txt22 eq "Zahlungseingang"){
$dbt->update_one($dbh,$update_ctt,"int14=null",$c_id);
$dbt->update_one($dbh,$update_ctt,"pay_time=now()",$c_id);
}
if($R::txt22 && $R::txt22 eq "Zahlung offen"){
$dbt->update_one($dbh,$update_ctt,"int14=1",$c_id);
$dbt->update_one($dbh,$update_ctt,"pay_time=null",$c_id);
}
}
$feedb->{u_rows} = $u_rows;
@ -504,13 +512,13 @@ sub set_workflow {
delete $ctt->{txt22};
delete $ctt->{txt23};
delete $ctt->{txt25};
delete $ctt->{txt28};
delete $ctt->{txt30};
delete $ctt->{itime};
delete $ctt->{mtime};
delete $ctt->{close_time};
delete $ctt->{invoice_time};
delete $ctt->{pay_time};
delete $ctt->{warn_time};
my $insert_ctt = {
%$ctt,
@ -556,9 +564,10 @@ sub set_workflow {
}
$db->update_users4trans($c_idnew,"218","",$users_dms->{u_id});
my $uri_path = $dbt->recurse_node($dbh,$node->{main_id});
print "$varenv{wwwhost}/$uri_path?return=$i_rows-$u_rows-$d_rows\n";
print redirect("$varenv{wwwhost}/$uri_path?return=$i_rows-$u_rows-$d_rows");
#my $uri_path = $dbt->recurse_node($dbh,$node->{main_id});
#print "$varenv{wwwhost}/$uri_path?return=$i_rows-$u_rows-$d_rows\n";
#print redirect("$varenv{wwwhost}/$uri_path?return=$i_rows-$u_rows-$d_rows");
print redirect("$varenv{wwwhost}/DMS/Faktura?ct_trans=open\&c_id4trans=$c_idnew\&tpl_id4trans=218\&owner=$users_dms->{u_id}\&offset=$R::offset\&limit=$R::limit\&return=$i_rows-$u_rows-$d_rows");
exit 0;
}#end set_workflow

View file

@ -84,25 +84,10 @@ sub preinit(){
if(!$users_dms->{u_id}){
return "failure::Fehler<br /> Die Anwender Authentifikation wurde unterbrochen.";
return "failure::Fehler<br /> Die Sitzung wurde unterbrochen.";
}
#Mindestmengenanzeige #ist in Liste.pm implementiert
#if(!$R::detail_search && $path =~ /root$/ && "$R::redirected" ne "1"){
# my $repath = $lb->shortcut2("$path","$users_dms->{u_id}");
#print redirect("$varenv{wwwhost}$script$repath?redirected=1&detail_search=1&s_int03=<=0");
#exit 0;
#}els
#topmenu shortcut handling
#if(!$R::no_redirect && !$R::detail_search && $path =~ /^\/([\w-\s]+)\/([\w-\s]+)$|root$/ && "$R::redirected" ne "1"){
# my $repath = $lb->shortcut2("$path","$users_dms->{u_id}");
# if("$repath" ne "$path"){
# print redirect("$varenv{wwwhost}$script$repath?redirected=1\&return=0-0-0|$i_rows-$u_rows-$d_rows");
# exit 0;
# }
#}
if(!looks_like_number($R::c_id4trans) || !looks_like_number($R::tpl_id4trans)){
if((!looks_like_number($R::c_id4trans) || !looks_like_number($R::tpl_id4trans)) && $R::ct_trans !~ /delete_trans/ && !$R::v_abschluss){
print FILE Dumper($q);
return "failure::Fehler<br /> Daten ID's nicht vollständig ($R::c_id4trans || $R::tpl_id4trans)";
}
@ -500,8 +485,8 @@ sub preinit(){
$d_rows += $db->delete_content($table,$ctt->{c_id});
$db->update_users4trans("0","0","",$users_dms->{u_id});
print $q->div({-class=>'elementwhite'},"2... redirecting to ... or CLICK ", $q->a({href=>"$varenv{wwwhost}$script$path"},"$varenv{wwwhost}$script$path"));
print redirect("$varenv{wwwhost}$script$path?redirected=1\&return=0-0-0|$i_rows-$u_rows-$d_rows");
print $q->div({-class=>'elementwhite'},"2... redirecting to ... or CLICK ", $q->a({href=>"$varenv{wwwhost}$script$path"},"$varenv{wwwhost}/DMS/Faktura"));
print redirect("$varenv{wwwhost}/DMS/Faktura?redirected=1\&return=0-0-0|$i_rows-$u_rows-$d_rows");
exit 0;
}
@ -569,8 +554,8 @@ sub preinit(){
owner => $users_dms->{u_id},
};
print FILE "c_id4trans:$R::c_id4trans,tpl_id4trans:$R::tpl_id4trans by condition: ($node_faktura->{invoice_nr} > 0) && ($ctt->{ct_name} !~ /\d/ || $R::set_main_id != $rel->{main_id})\n";
if($node_faktura->{invoice_nr} > 0 && $ctt->{c_id} > 0 && ($ctt->{ct_name} !~ /\d/ || $R::set_main_id != $rel->{main_id})){
print FILE "c_id4trans:$R::c_id4trans,tpl_id4trans:$R::tpl_id4trans by condition: ($node_faktura->{invoice_nr} > 0) && $ctt->{ct_name} !~ /\d/)\n old-relation $rel->{main_id} \n new-relation $R::set_main_id\n";
if($node_faktura->{invoice_nr} > 0 && $ctt->{c_id} > 0 && $ctt->{ct_name} !~ /\d/){
my $nextNr = $node_faktura->{invoice_nr};
$update_ctt->{ct_name} = "$nextNr";
@ -587,7 +572,6 @@ sub preinit(){
$update_ctt->{txt00} = $node->{node_name};
$u_rows += $dbt->update_record($dbh,$update_ctt,$ctt);
print FILE "invoice_nr:$invoice_nr,c_id4trans:$R::c_id4trans,tpl_id4trans:$R::tpl_id4trans by condition: ($node_faktura->{invoice_nr} > 0) && ($ctt->{ct_name} !~ /\d/ || $R::set_main_id != $rel->{main_id})\n";
}
@ -609,7 +593,7 @@ sub preinit(){
}
$update_ctt->{state} = "$state";
$update_ctt->{int14} = 2 if($state =~ /payone/);#set OPOS
$update_ctt->{int14} = 2;#set OPOS
$u_rows += $dbt->update_record($dbh,$update_ctt,$ctt);
if($state =~ /payone/){
@ -631,10 +615,10 @@ sub preinit(){
$ctt = $db->get_content1("contenttrans",$ctt->{c_id});
}
if($ctadr->{int03} == 1 && $ctadr->{ct_name} =~ /\w{2}-\d+/){
if($ctadr->{ct_name} =~ /\w{2}-\d+/){
my $payoneret = $payone->preauthorizationSEPA_main(\%varenv,$ctadr,$ctt,$users_dms->{u_id});
sleep 2;
}elsif($ctadr->{int03} == 2 && length($ctadr->{ct_name}) >= 19){
}elsif(length($ctadr->{ct_name}) >= 19){
my $payoneret = $payone->preauthorizationCC_main(\%varenv,$ctadr,$ctt,$users_dms->{u_id});
sleep 2;
}
@ -663,8 +647,11 @@ sub preinit(){
#}else{
#return "failure::Payone Geldeinzug nicht ausgeführt. Hat der Einzug bereits stattgefunden?";
}
}else{
$db->updater($table,"c_id",$ctt->{c_id},"int14","null","","","","","");
}elsif($ctt->{txt00} eq "Storno" || $state eq "Zahlungsausfall"){
$update_ctt->{int14} = "null";
$update_ctt->{pay_time} = "now()";
$u_rows += $dbt->update_record($dbh,$update_ctt,$ctt);
$db->updater($table,"ct_name",$ctt->{barcode},"int14","null","","","","","");#delete OPOS also on basic invoice
}
}

View file

@ -407,12 +407,11 @@ td {
$mandat_nr = " Mandatsreferenz: $ctt->{txt26}" if($ctt->{txt26} =~ /\w{2}-/);
my $invoice_time = $ctt->{invoice_time} || $ctt->{mtime};
#my $update_ctt = {
# table => "contenttrans",
# pay_time => "$invoice_time",
# };
#necersarry for non payone capture
#$dbt->update_record($dbh,$update_ctt,$ctt) if(!$ctt->{pay_time});
my $update_ctt = {
table => "contenttrans",
invoice_time => "$invoice_time",
};
$dbt->update_record($dbh,$update_ctt,$ctt);
my $mtime = $lb->time4de("$invoice_time","");
my $position = "";

View file

@ -189,16 +189,39 @@ EOF
print $q->end_form,"\n";
print $q->div({-style=>'position:fixed;bottom:2%;right:1%;z-index:10;font-size:13px;'}," (c_id: $ctt->{c_id} | rel_id: $ctt->{rel_id} | tpl_id: $ctt->{tpl_id})"),"\n" if($users_dms->{u_id} eq $varenv{superu_id});
##########
#Relationen
if($ctt->{barcode}){
my $pref_rel = {
table => "contenttrans",
fetch => "all",
keyfield => "c_id",
barcode => $ctt->{barcode},
};
my $ctt_rel = "";
$ctt_rel = $dbt->fetch_record($dbh,$pref_rel);
if(ref($ctt_rel) eq "HASH"){
my $top = 30;
foreach my $id (sort { $ctt_rel->{$b}->{c_id} <=> $ctt_rel->{$a}->{c_id} } keys (%$ctt_rel)){
my $toppx = $top . "px";
print $q->div({-style=>"position:absolute;top:$toppx;right:10px;font-size:0.91em;background-color:#f7ae37"}, $q->a({-class=>"linknav",-href=>"/$dbt->{shareedms_conf}->{parent_node}/Faktura/$ctt_rel->{$id}->{node_name}?ct_trans=open\&c_id4trans=$ctt_rel->{$id}->{c_id}\&tpl_id4trans=$ctt_rel->{$id}->{template_id}\&owner=$users_dms->{u_id}",-title=>"Faktura Terminal öffnen"},"[ $ctt_rel->{$id}->{txt00} #$ctt_rel->{$id}->{ct_name} ]")),"\n";
$top += 22;
}
}
}
#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 $q->start_table({-border=>'0', -width=>'100%',-align=>'left', -cellpadding=>'0', -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";
print $q->start_table({-class=>'list', -height=>'10em',-border=>'0', -width=>'100%',-align=>'left', -cellpadding=>'3', -cellspacing=>'0'}),"\n";
###Content #Edit Address --> template=Adressenliste
$ctt->{txt01} = $q->unescapeHTML("$ctt->{txt01}");
my $int05 = "";
@ -213,7 +236,7 @@ EOF
print $q->Tr(),"\n";
print "<td class='tdescr4' nowrap>";
print $but->singlesubmit7("ct_trans","save_adr","$ib{save_adr}","","","ebutton"),"\n";
print $but->singlesubmit7("ct_trans","save_adr","$ib{save_adr}","","","autofocus"),"\n";
#print $q->span($q->a({-class=>"ebutton3",-href=>'javascript:history.back()'}, " back "));
print "</td>\n";
print $q->td({-class=>'tdval4',-colspan=>'2'},"Kunden ID $c_idadr"),"\n";
@ -283,7 +306,7 @@ EOF
print "</td>\n";
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";
print $q->start_table({-class=>'list', -border=>'0', -width=>'100%',-align=>'left', -cellpadding=>'3', -cellspacing=>'0'}),"\n";
#if operator accounting/invoice
if($node_meta->{tpl_id} == 208 || $ctt->{int10} == 2){
@ -363,123 +386,92 @@ EOF
print $q->hidden(-name=>'set_main_id', -override=>'1', -value=>"$set_main_id"),"\n";
#Text save area
print "<tr><td colspan='5' style='font-size:1.1em;border:1px dashed silver;'>\n";
print $q->start_table({-class=>'list', -border=>'0', -width=>'100%',-align=>'left', -cellpadding=>'0', -cellspacing=>'0'}),"\n";
#Internas und Bearbeitungstatus
print "<tr><td colspan='1'>\n";
print $q->start_table({-border=>'0', -width=>'100%',-align=>'left', -cellpadding=>'0', -cellspacing=>'0'}),"\n";
my @s_valxx = ("");
my $s_hash = {};
$s_hash = $dbt->{shareedms_conf}->{warning_state};
foreach my $s_key (sort keys (%{ $s_hash })) {
push @s_valxx, "$s_key:($s_key) $s_hash->{$s_key}";
#1.
print $q->Tr(),"\n";
print $q->td({-class=>'tdval5',-style=>'height:40px;',-colspan=>"1"},$q->span({-style=>'font-weight:bold;'},"Internas und Bearbeitungstatus")),"\n";
if($ctt->{txt00} ne "Storno"){
my @_orderstate = split(/\|/,$dbt->{shareedms_conf}->{order_state});
print $q->td({-class=>'tdval5',-colspan=>1},$but->selector("txt22","180px",$ctt->{txt22},@_orderstate)),"\n";
}else{
print $q->td({-class=>'tdval5',-colspan=>"1"},"&nbsp;"),"\n";
}
print $q->Tr(),"\n";
print $q->td({-class=>'tdval5',-colspan=>"1"},$q->span({-style=>'font-weight:bold;'},"Internas und Bearbeitungstatus")),"\n";
if($ctt->{txt00} eq "Storno"){
print $q->td({-class=>'tdval5',-colspan=>"1"},""),"\n";
#2.
print $q->Tr(),"\n";
if($ctt->{txt00} eq "Storno" || $ctt->{ct_name} =~ /\d+-\d/){
print $q->td({-class=>'tdval5',-colspan=>"2"},"&nbsp;"),"\n";
}else{
my @s_valxx = ("");
my $s_hash = {};
$s_hash = $dbt->{shareedms_conf}->{warning_state};
foreach my $s_key (sort keys (%{ $s_hash })) {
push @s_valxx, "$s_key:$s_key";
}
if($ctt->{ct_name} =~ /^\d+$/){
undef @s_valxx[3];
undef @s_valxx[4];
undef @s_valxx[5];
}
print $q->td({-class=>'tdval5',-colspan=>"1"},"Mahnstufe",$but->selector_class("int06","","",$ctt->{int06},@s_valxx)),"\n";
print $q->td({-class=>'tdval5',-colspan=>"1"},"Zahlungserinnerung",$but->selector_class("int06","","",$ctt->{int06},@s_valxx)),"\n";
print $q->td({-class=>'tdval5',-colspan=>1},"Fälligkeit",$q->textfield(-id=>'datepicker3',-class=>'etxt',-name=>"warn_time",-default=>"$warn_time",-override=>1,-size=>"8",-maxlength=>10)),"\n";
}
print $q->td({-class=>'tdval5',-colspan=>"2"},$q->span({-style=>'font-weight:bold;'},"PDF Formular Text "),$q->span({-style=>'color:silver;font-weight:normal;'}," ( für den Kunden sichtbar )")),"\n";
if($dbt->{shareedms_conf}->{order_state}){
print $q->Tr(),"\n";
my @_orderstate = split(/\|/,$dbt->{shareedms_conf}->{order_state});
print $q->td({-class=>'tdval5',-colspan=>1},$but->selector("txt22","180px",$ctt->{txt22},@_orderstate)),"\n";
if($ctt->{txt00} eq "Storno"){
print $q->td({-class=>'tdval5',-colspan=>"1"},""),"\n";
}else{
print $q->td({-class=>'tdval5',-colspan=>1},"Fälligkeit",$q->textfield(-id=>'datepicker3',-class=>'etxt',-name=>"warn_time",-default=>"$warn_time",-override=>1,-size=>"8",-maxlength=>10)),"\n";
}
}
#3.
$ctt->{txt23} = $q->unescapeHTML("$ctt->{txt23}") if($ctt->{txt23});
print $q->Tr(),"\n";
print $q->td({-class=>'tdval5',-colspan=>'2'},$q->textarea(-class=>'etxt',-name=>'txt23', -default=>"$ctt->{txt23}", -rows=>8, -columns=>65)),"\n";
print $q->end_table,"\n";
print "</td>\n";
#------------------------------
#PDF Formular Text
print "<td colspan='1'>\n";
print $q->start_table({-border=>'0', -width=>'100%',-align=>'left', -cellpadding=>'0', -cellspacing=>'0'}),"\n";
#1.
print $q->Tr(),"\n";
print $q->td({-class=>'tdval5',-style=>'height:40px;',-colspan=>"2"},$q->span({-style=>'font-weight:bold;'},"PDF Formular Text "),$q->span({-style=>'color:silver;font-weight:normal;'}," ( für den Kunden sichtbar )")),"\n";
#2.
print $q->Tr(),"\n";
print $q->td({-class=>'tdval5',-style=>'',-colspan=>"2"},"&nbsp;"),"\n";
#print $q->td({-class=>'tdval5',-style=>'height:45px;',-colspan=>"2"},"Zahlungseingang",$but->rev_checkbox("4","int14","$ctt->{int14}")),"\n";
#3.
$ctt->{txt12} = $q->unescapeHTML($ctt->{txt12}) || "";
print $q->Tr(),"\n";
print $q->td({-class=>'tdval5',-colspan=>'2'},$q->textarea(-class=>'etxt',-name=>'txt12', -default=>"$ctt->{txt12}", -rows=>8, -columns=>65)),"\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=>'tdval5',-colspan=>2},"$ctf->{$key}"),"\n";
}
}
}
###
print $q->Tr(),"\n";
if($ctt->{close_time}){
print $q->td({-class=>'tdval5',-colspan=>2}, $but->singlesubmit7("ct_trans","save_text_internas","$ib{save_text}","","","ebutton"),"$formular_text"),"\n";
}else{
print $q->td({-class=>'tdval5',-colspan=>2}, $but->singlesubmit7("ct_trans","save_text","$ib{save_text}","","","ebutton"),"$formular_text"),"\n";
}
print $q->end_table,"\n";
print "</td></tr>\n";
print $q->Tr(),"\n";
if($ctt->{close_time}){
print $q->td({-class=>'tdval5',-style=>'width:90%;',-colspan=>2}, $but->singlesubmit7("ct_trans","save_text_internas","$ib{save_text}","","","autofocus")),"\n";
}else{
print $q->td({-class=>'tdval5',-style=>'width:90%;',-colspan=>2}, $but->singlesubmit7("ct_trans","save_text","$ib{save_text}","","","autofocus")),"\n";
}
print $q->hidden(-name=>'c_id4trans', -override=>'1', -value=>"$ctt->{c_id}"),"\n";
print $q->hidden(-name=>'set_main_id', -override=>'1', -value=>"$set_main_id"),"\n";
#print $q->hidden(-name=>'set_main_id', -override=>'1', -value=>"$set_main_id"),"\n";
print $q->end_form,"\n";
print $q->end_table,"\n";
###end Big
if($ctt->{barcode}){
my $pref_rel = {
table => "contenttrans",
fetch => "all",
keyfield => "c_id",
barcode => $ctt->{barcode},
c_id => "!=::$ctt->{c_id}",
};
my $ctt_rel = "";
$ctt_rel = $dbt->fetch_record($dbh,$pref_rel);
if(ref($ctt_rel) eq "HASH"){
print "<div style='padding: 0 15px;font-size:0.91em;'><b>Relationen</b>\n";
foreach my $id (sort { $ctt_rel->{$b}->{c_id} <=> $ctt_rel->{$a}->{c_id} } keys (%$ctt_rel)){
print $q->span({-style=>"background-color:#f7ae37"}, $q->a({-class=>"linknav",-href=>"/$dbt->{shareedms_conf}->{parent_node}/Faktura/$ctt_rel->{$id}->{node_name}?ct_trans=open\&c_id4trans=$ctt_rel->{$id}->{c_id}\&tpl_id4trans=$ctt_rel->{$id}->{template_id}\&owner=$users_dms->{u_id}",-title=>"Faktura Terminal öffnen"},"[ $ctt_rel->{$id}->{txt00} #$ctt_rel->{$id}->{ct_name} ]")),"\n";
}
print "</div>\n";
}
}
#payone-return log
$ctt->{txt28} = $lb->newline($ctt->{txt28},"","");
print $q->div({-id=>'Oline'},""),"\n";
print $q->div({-style=>'padding: 0 15px 20px 15px;font-size:0.91em;'},"<b>payone-response log</b><br />$ctt->{txt28}"),"\n";
$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";
#$db->update_content4change2("contenttrans",$ctt->{c_id},"$line_count","int04") if($ctt->{c_id});
print "</div>\n";
return $line_count;
return;
}
1;

View file

@ -222,9 +222,9 @@ sub tpl(){
if(!$R::theft_details){
$search->{int10} = "IN::(7,8)";
$search->{int03} = ">::$dbt->{copri_conf}->{theftalarm}->{move_count}";#move count
#$search->{int07} = ">::$dbt->{copri_conf}->{theftalarm}->{speed}";#speed
#$search->{int08} = ">::$dbt->{copri_conf}->{theftalarm}->{meter}";#meter
$search->{speedORmeter} = "(cp.int07 > $dbt->{copri_conf}->{theftalarm}->{speed} OR cp.int08 > $dbt->{copri_conf}->{theftalarm}->{meter})";
$search->{int07} = ">::$dbt->{copri_conf}->{theftalarm}->{speed}";#speed
$search->{int08} = ">::$dbt->{copri_conf}->{theftalarm}->{meter}";#meter
#$search->{speedORmeter} = "(cp.int07 > $dbt->{copri_conf}->{theftalarm}->{speed} OR cp.int08 > $dbt->{copri_conf}->{theftalarm}->{meter})";
}
$cttpos = $dbt->collect_theftpos($dbh,$search);
}
@ -532,8 +532,8 @@ sub tpl(){
print "</div>\n";
print $q->div({-style=>'clear:both;'}, "&nbsp;"),"\n";
print $q->div({-style=>'text-align:left;text-decoration:underline;padding:0 0.5em;'}, "Legende"),"\n";
if($node_meta->{ct_table} eq "contenttheftpos"){
if(1==2 && $node_meta->{ct_table} eq "contenttheftpos"){
print $q->div({-style=>'text-align:left;text-decoration:underline;padding:0 0.5em;'}, "Legende"),"\n";
print $q->div({-style=>'text-align:left;font-style:italic;padding:0.1em 0.5em;'}, $q->span({-style=>'padding:0 0.8em;',-style=>"color:$node_meta->{bg_color};"},"Alarm detected:"), "Es wurde eine Bewegung (Erschütterung) mit abgeschlossenem Rahmenschloss erkannt"),"\n";
print $q->div({-style=>'text-align:left;font-style:italic;padding:0.1em 0.5em;'}, $q->span({-style=>'padding:0 0.8em;',-style=>"color:$node_meta->{bg_color};"},"Alarm movement:"), "Es wurde eine Fortbewegung mit abgeschlossenem Rahmenschloss erkannt"),"\n";
}

View file

@ -76,8 +76,9 @@ sub tpl(){
my $ctadr = $db->get_content1("contentadr",$ctt->{int10});
my $buchen_mtime = $lb->time4de($ctt->{mtime});
my $vibuchen_mtime = $lb->time4de($ctt->{mtime},1);
$vibuchen_mtime = "Payone post " . $lb->time4de($ctt->{pay_time},1) . " . " if($ctt->{pay_time});
my $vibuchen_mtime = "";
#my $vibuchen_mtime = $lb->time4de($ctt->{mtime},1);
#$vibuchen_mtime = "Payone post " . $lb->time4de($ctt->{pay_time},1) . " . " if($ctt->{pay_time} && $ctt->{state} =~ /payone/);
my @tpl_order = ("txt01=Beschreibung","ct_name=Nummer","date_time=timerange","int03=Menge (Miet - Gratis Zeit)","int02=Preis","int07=Rabatt","int04=Gesamt");
my $tplf = $db->get_tpl("201");#Kunden-Faktura, ex Firma
@ -423,7 +424,7 @@ EOF
$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}){
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} && $cttpos->{$id}->{end_time}){
@ -445,6 +446,10 @@ EOF
}
}#foreach end
print $q->end_form,"\n";#en transposform
print $q->start_form(-name=>'set_stateform'),"\n";
if($sum_parts19 && $sum_parts19 != 0){
$sum_umst19 = $sum_parts19 / $diff19 * 19;
$sum_umst19 = $pri->round($sum_umst19);
@ -555,9 +560,10 @@ EOF
if($ctt->{state} && $ctt->{int01}){
$ctt->{int01} =~ s/\./,/;
my $style = "color:red;" if($ctt->{int01} ne $sum_paid);
my $opos = "";
$opos = "OPOS" if($ctt->{int14} && $ctt->{int14} > 0);
print $q->div({-style=>"padding:0.5em;font-size:0.81em;width:98%;text-align:right;"},"<span style='color:red;'>$opos</span> $vibuchen_mtime \"$ctt->{state}\" $ctt->{int01} €"),"\n";
$vibuchen_mtime = $lb->time4de($ctt->{pay_time},1) if($ctt->{pay_time});
my $opos = "";
$opos = "OPOS" if($ctt->{int14} && $ctt->{int14} > 0);
print $q->div({-style=>"padding:0.5em;font-size:0.81em;width:98%;text-align:right;"},"<span style='color:red;'>$opos</span> Summe $ctt->{int01} € gebucht per \"$ctt->{state}\" am $vibuchen_mtime "),"\n";
}
if(!$ctt->{close_time}){
@ -571,9 +577,29 @@ EOF
$but->singlesubmit1("set_state","buchen")),
"\n";
}
if($ctt->{txt00} ne "Storno" && $ctt->{ct_name} !~ /^\d+$/){
my @s_valxx = ("");
my $s_hash = {};
$s_hash = $dbt->{shareedms_conf}->{warning_state};
foreach my $s_key (sort keys (%{ $s_hash })) {
push @s_valxx, "$s_key:($s_key) $s_hash->{$s_key}";
}
my $warn_time = $ctt->{warn_time} || "";
$warn_time = $lb->time4de($warn_time,0) if($warn_time);
if($ctt->{ct_name} =~ /\d+-\d/){
undef @s_valxx[1];
undef @s_valxx[2];
}
print $q->div({-class=>'element6',-style=>'float:right;'},"Mahnstufe",$but->selector_class("int06","","",$ctt->{int06},@s_valxx),
"Fälligkeit",$q->textfield(-id=>'datepicker3',-class=>'etxt',-name=>"warn_time",-default=>"$warn_time",-override=>1,-size=>"8",-maxlength=>10)),"\n";
print $q->hidden(-name=>'int14', -override=>'1', -value=>"1"),"\n";#set OPOS
}
}
#disabled 2022-11-23, needs more testing. Add +10.- on preauth
if($users_dms->{u_id} == $dbt->{copri_conf}->{superu_id}){
if(1==2 && $users_dms->{u_id} == $dbt->{copri_conf}->{superu_id}){
#further payone capture are only allowed if OPOS && sequence && TXID is set
if($ctt->{int14} && $ctt->{int18} && $ctt->{txt16}){
print $q->div({-class=>'element6',-style=>'clear:both;'},"Test. Weitere Payone Einzüge über die vorhandene TXID $ctt->{txt16} (vorautorisiert Summe beachten) durch manuelle inkrement der Sequencenr mit +1", $q->textfield(-class=>'etxt',-name=>"payone_sequence",-default=>"", -override=>'1',-size=>"1",-maxlength=>1)),"\n";
@ -603,13 +629,6 @@ EOF
print $q->div({-style=>'padding:0.5em;font-size:0.81em;width:98%;text-align:right;'}, "Download: ", $q->a({-href=>"$varenv{wwwhost}/FileOut?file=$praefix-$ctt->{ct_name}.pdf&sessionid=$coo", -target=>"_blank" , -type=>'application/octet-stream', -style=>'text-decoration:underline;'}, "$praefix-$ctt->{ct_name}.pdf")),"\n";
}
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;"}, "Payone Einzug erfolgreich"),"\n";
}
$db->updater("contenttrans","c_id","$ctt->{content_id}","txt20","$accounting_start - $accounting_end","","","","","no_time") if(!$int05 && $accounting_start && $accounting_end);
$db->updater("contenttrans","c_id","$ctt->{content_id}","int15","$sum_preauth","","","","","no_time") if($sum_preauth || $sum_preauth == 0);

View file

@ -422,10 +422,10 @@ sub get_positions {
my $c_id = 0;
$c_id = $dbt->insert_contentoid($dbh,$insert);
print FILE "insert sub get_positions:" . Dumper($insert);
print FILE "send_alarm2hotline condition: syshost:$op_name->{syshost}, c_id:$c_id && $theftmove_count > $dbt->{copri_conf}->{theftalarm}->{move_count} && ($resp->{speed} > $dbt->{copri_conf}->{theftalarm}->{speed} || $resp->{attributes}->{distance} > $dbt->{copri_conf}->{theftalarm}->{meter})\n";
print FILE "send_alarm2hotline condition: syshost:$op_name->{syshost}, c_id:$c_id && $theftmove_count > $dbt->{copri_conf}->{theftalarm}->{move_count} && ($resp->{speed} > $dbt->{copri_conf}->{theftalarm}->{speed} && $resp->{attributes}->{distance} > $dbt->{copri_conf}->{theftalarm}->{meter})\n";
#theft mailing
if($c_id && $theftmove_count > $dbt->{copri_conf}->{theftalarm}->{move_count} && ($resp->{speed} > $dbt->{copri_conf}->{theftalarm}->{speed} || $resp->{attributes}->{distance} > $dbt->{copri_conf}->{theftalarm}->{meter})){
if($c_id && $theftmove_count > $dbt->{copri_conf}->{theftalarm}->{move_count} && ($resp->{speed} > $dbt->{copri_conf}->{theftalarm}->{speed} && $resp->{attributes}->{distance} > $dbt->{copri_conf}->{theftalarm}->{meter})){
#send mail
#max ~ 10 mails
if($theftmove_count < 10){