invoice management fix

This commit is contained in:
Rainer Gümpelein 2022-01-26 15:52:25 +01:00
parent 83da7fe92b
commit dc2b4f7086
5 changed files with 44 additions and 64 deletions

View file

@ -15,6 +15,7 @@ use Mod::Libenz;
use Mod::Libenzdb;
use Mod::DBtank;
use Tpl::TransPositionen;
use Data::Dumper;
sub new {
my $class = shift;
@ -34,40 +35,27 @@ sub tpl(){
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 = { c_id => 0 };
if($R::c_id4trans && $node_meta->{tpl_id} && $users_dms->{u_id} > 0){
$rel4tpl = $db->get_rel4tpl("",$lang,$R::c_id4trans,$node_meta->{tpl_id});
}
#print Dumper($users_dms) . "if($R::c_id4trans && $node_meta->{tpl_id} && $users_dms->{u_id} > 0)\n";
my $rel4tpl = $db->get_rel4tpl("",$lang,$users_dms->{c_id4trans},$node_meta->{tpl_id});
my @tpl_order = split /,/,$rel4tpl->{tpl_order};
my $node = $db->get_node4multi($node_meta->{main_id},$lang) if($node_meta->{main_id});
if(!$node->{main_id} && $users->{owner}){
if(!$node->{main_id} && $users_dms->{u_id}){
$db->update_users4trans("0","0",$R::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}");
$users_dms = $db->select_users($users_dms->{u_id});
}
my $ctx = { c_id => 0 };
$ctx = $db->get_content1("contenttrans",$R::c_id4trans);
$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");
@ -183,7 +171,7 @@ EOF
}
print "</div>\n";
print $q->hidden(-name=>'owner', -override=>'1', -value=>"$users->{owner}");
print $q->hidden(-name=>'owner', -override=>'1', -value=>"$users_dms->{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");
@ -195,7 +183,7 @@ EOF
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});
print $q->div({-style=>'position:fixed;bottom:2%;right:1%;z-index:10;font-size:13px;'}," (c_id: $ctx->{c_id} | rel_id: $rel4tpl->{rel_id} | tpl_id: $rel4tpl->{tpl_id})"),"\n" if($users_dms->{u_id} eq $varenv{superu_id});
##########
@ -209,14 +197,13 @@ EOF
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")){
if($users_dms->{u_id} && ($R::trans2edit eq "client" || $R::ct_trans eq "add_transadr")){
my @_anrede = ("","Frau","Herr","Firma");
print $q->hidden(-name=>'c_id4trans', -override=>'1', -value=>"$ctx->{c_id}"),"\n";#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";
@ -238,7 +225,7 @@ EOF
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){
}elsif($users_dms->{u_id}){
print $q->Tr(),"\n";
if(!$ctx->{close_time}){
print "<td class='tdtxt' style='width:8em;' nowrap>";
@ -255,7 +242,7 @@ EOF
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";
print $q->td({-class=>'tdval'},$q->span({-style=>"background-color:#dcd77f;"},$q->a({-class=>"linknav",-href=>"/DMS/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},"","");
@ -282,7 +269,7 @@ EOF
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")){
if($users_dms->{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";
@ -366,7 +353,7 @@ EOF
print "<tr><td colspan='5' style='font-size:1em;'>\n";
#require "Tpl/TransPositionen.pm";
my $line_count2 = $transp->tpl($node_meta,$users_dms,$set_main_id,$rel4tpl->{main_id},$rel4tpl->{rel_id},$ctx->{c_id},$u_id,$lang,"$return","$node->{node_name}");
my $line_count2 = $transp->tpl($node_meta,$users_dms,$set_main_id,$rel4tpl->{main_id},$rel4tpl->{rel_id},$rel4tpl->{content_id},$lang,"$return","$node->{node_name}");
print "</td></tr>\n";
###end Edit Parts

View file

@ -96,7 +96,7 @@ sub tpl(){
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){
if($R::s_owner && $channel_map->{$id} eq $R::s_owner){
$searchref->{owner} = $id;
#$s_u_name = $channel_map->{$id};
}
@ -257,14 +257,14 @@ EOF
}
#1. Search-fields
my $s_val;
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};
$s_val = $searchref->{$key} if($searchref->{$key});
#print "$key=$searchref->{$key}|";
if($key =~ /node|txt|int|uri|ct_name|_id|barcode|sort|public/){
if($key =~ /barcode|int04/){
@ -372,8 +372,8 @@ EOF
$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},"","");
$ct4rel->{$id}->{$key} = $q->unescapeHTML($ct4rel->{$id}->{$key}) if($ct4rel->{$id}->{$key});
$ct4rel->{$id}->{$key} = $lb->newline($ct4rel->{$id}->{$key},"","") if($ct4rel->{$id}->{$key});
if($key eq "owner"){
my $u_name = $ct4rel->{$id}->{owner};
foreach my $ctu_id (keys (%$ct_users)){

View file

@ -31,7 +31,7 @@ sub new {
#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 ($node_meta,$users_dms,$set_main_id,$main_id,$rel_id,$c_id,$lang,$return,$node_name) = @_;
my $q = new CGI;
my $cf = new Config;
my $lb = new Libenz;
@ -48,7 +48,6 @@ sub tpl(){
$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 = "";
@ -86,13 +85,8 @@ sub tpl(){
my $max_sum = $ctf->{int03} || "10000";
my $cttpos = { c_id => 0 };
my $rows = 0;
($cttpos,$rows) = $db->collect_contentpos("contenttrans",$c_id) if($c_id);
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}";
}
($cttpos,$rows) = $db->collect_contentpos("contenttrans",$c_id);# if($c_id);
if($varenv{orga} eq "dms"){#obsolete after migrating lx-rad and mobile ...
print<<EOF
<style>
@ -265,10 +259,10 @@ EOF
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\&tpl_id4trans=$node_meta->{tpl_id}\&owner=$users->{u_id}",-title=>"Datensatz bearbeiten"}, $q->img({-src=>"$varenv{metahost}/glyphicons/glyphicons-151-edit.png"})),"\n";
print $q->a({-class=>"editnav",-href=>"/DMS/Faktura?trans2edit=transpos\&c_idpos=$cttpos->{$id}->{c_id}\&c_id4trans=$c_id\&tpl_id4trans=$node_meta->{tpl_id}\&owner=$users_dms->{u_id}",-title=>"Datensatz bearbeiten"}, $q->img({-src=>"$varenv{metahost}/glyphicons/glyphicons-151-edit.png"})),"\n";
}
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 $q->a({-class=>"linknav3", -style=>"background-color:$varenv{calendar_active_color}",-href=>"/DMS/$calpath/?cttpos_id=$cttpos->{$id}->{c_id}",-title=>"Im $calpath öffnen"},"<br /><br />ID $cttpos->{$id}->{c_id}"),"\n";
print "</td>\n";
#Tablecontent (parameter)
@ -334,7 +328,7 @@ EOF
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";
print $q->td({-class=>'tdint',-style=>"min-width:60px;padding-top:5px;"}, $q->a({-class=>"linknav3",-style=>"$stamm_style",-href=>"/DMS/Waren/?detail_search=1&s_barcode=$cttpos->{$id}->{barcode}",-title=>"Im Warenstamm"},"$article")),"\n";
}else{
print $q->td({-class=>'tdint'},"$article"),"\n";
}
@ -436,13 +430,12 @@ EOF
my $n="5";
my $m= 1 + $k - $n;
$m++ if($users->{kind_of_trans} =~ /Faktur|Verleih/);
$m++;
print "<tr><td colspan='$m'>&nbsp;</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("&nbsp;");
#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:");
@ -465,7 +458,6 @@ EOF
}
}
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/>");
@ -476,7 +468,7 @@ EOF
print "</tr>";
print $q->end_table;
print $q->hidden(-name=>'owner', -override=>'1', -value=>"$users->{u_id}");
print $q->hidden(-name=>'owner', -override=>'1', -value=>"$users_dms->{u_id}");
print $q->hidden(-name=>'offset', -override=>'1', -value=>"$R::offset") if($R::offset);
print $q->hidden(-name=>'c_id4trans', -override=>'1', -value=>"$c_id");
print $q->hidden(-name=>'tpl_id4trans', -override=>'1', -value=>"$node_meta->{tpl_id}");
@ -488,7 +480,7 @@ EOF
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(!$ctt->{close_time} && $varenv{Zahlungsweise} && $users_dms->{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");
@ -518,7 +510,7 @@ EOF
"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/);
$but->selector("state","150px",$kind_of_payment,@_paymentstate)),"\n";
}
}
@ -540,7 +532,7 @@ EOF
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->div({-style=>"padding:0.5em;font-size:0.81em;width:98%;text-align:right;"}, "eMail wurde nicht versandt! Rechnung eMail ", $but->singlesubmit1("ct_trans","send_invoice_again","send_invoice_again")),"\n" if($users_dms->{u_id} == $dbt->{copri_conf}->{superu_id});
print $q->end_form;
}