CMS-Text sync for operators. copri email integration init

This commit is contained in:
ragu 2023-07-27 07:05:23 +02:00
parent c603ead447
commit 1672564775
18 changed files with 182 additions and 207 deletions

View file

@ -1648,6 +1648,7 @@ sub service_automatic {
}
if(!$service_id){
$crecord->{int04} = "null";#empty station
($response->{service_id}) = $self->service_insert($q,$authraw,$node_template,$crecord);
$bw->log("service_automatic insert ($response->{service_id}) ",$response,"");
my $rows = $self->service_update($q,$authraw,$node_template,$response->{service_id});

View file

@ -49,7 +49,7 @@ sub loop_sharees {
my $rest_hash = {};
my $rest = "";
foreach (@keywords){
if($_ =~ /request|authcookie|system|bike|station/g){
if($_ =~ /request|authcookie|system|bike|station|lang/g){
my $val = $q->param($_);
my $encoded_val = $uri_encode->encode($val);
$rest .= "$_=$encoded_val&";

View file

@ -68,7 +68,7 @@ my $response = {
apiserver => "$apiserver",
response => "$respreq",
uri_primary => "$dbt->{primary}->{sharee_primary}->{primaryApp}",
copri_version => "4.1.23.10",
copri_version => "4.1.23.15",
user_id => "",
authcookie => "",
new_authcoo => "0",
@ -95,19 +95,13 @@ my $response = {
}
};
my %varenv_prim = ();
if($varenv{dbname} eq $dbt->{primary}->{sharee_primary}->{database}->{dbname}){
if(1==1){
$varenv{cms} = $dbt->fetch_cms($dbh,{ lang => $q->escapeHTML($lang) });
$varenv_prim{cms} = $varenv{cms};
if($lang eq "de"){
$response->{faq_app_fullurl} = $dbt->{project_conf}->{faq_app_fullurl_de};
}else{
$response->{faq_app_fullurl} = $dbt->{project_conf}->{faq_app_fullurl_en};
}
}else{
my $dbh_primary = $dbt->dbconnect_extern($dbt->{primary}->{sharee_primary}->{database}->{dbname});
$varenv{cms} = $dbt->fetch_cms($dbh_primary,{ lang => $q->escapeHTML($lang) });
$varenv_prim{cms} = $varenv{cms};
}
my $aowner = 0;
@ -332,7 +326,7 @@ elsif($q->param('request') eq "booking_request"){
#return list of occupied/requested bikes
$record = $apif->user_bikes_occupied($dbh,$authraw,"");
$response->{bikes_occupied} = $apif->rentals(\%varenv_prim,$record,$authraw,"1");#returns JSON rental values
$response->{bikes_occupied} = $apif->rentals(\%varenv,$record,$authraw,"1");#returns JSON rental values
}#end still_requested
}else{
@ -416,7 +410,7 @@ elsif($q->param('request') eq "booking_cancel" || $q->param('request') eq "booki
$response = {%$response, %$booking_values};
my $record = $apif->user_bikes_occupied($dbh,$authraw,"show_dialog");
$response->{bikes_occupied} = $apif->rentals(\%varenv_prim,$record,$authraw,"1");
$response->{bikes_occupied} = $apif->rentals(\%varenv,$record,$authraw,"1");
#update on Ilockit
}else{
@ -425,12 +419,12 @@ elsif($q->param('request') eq "booking_cancel" || $q->param('request') eq "booki
$response = {%$response, %$booking_values};
my $record = $apif->user_bikes_occupied($dbh,$authraw,"");
$response->{bikes_occupied} = $apif->rentals(\%varenv_prim,$record,$authraw,"1");
$response->{bikes_occupied} = $apif->rentals(\%varenv,$record,$authraw,"1");
}
}#end occupied|available
else{
my $record = $apif->user_bikes_occupied($dbh,$authraw,"");
$response->{bikes_occupied} = $apif->rentals(\%varenv_prim,$record,$authraw,"1");
$response->{bikes_occupied} = $apif->rentals(\%varenv,$record,$authraw,"1");
}
}else{
@ -469,9 +463,9 @@ elsif($q->param('request') eq "user_bikes_occupied"){
$response = { %$response, %$auth };
my $record = $apif->user_bikes_occupied($dbh,$authraw,"show_dialog");
if($R::withoutkey){
$response->{bikes_occupied} = $apif->rentals(\%varenv_prim,$record,$authraw,"");
$response->{bikes_occupied} = $apif->rentals(\%varenv,$record,$authraw,"");
}else{
$response->{bikes_occupied} = $apif->rentals(\%varenv_prim,$record,$authraw,"1");
$response->{bikes_occupied} = $apif->rentals(\%varenv,$record,$authraw,"1");
}
}else{
$response->{response_state} = "Failure 1001: authcookie not defined";
@ -506,10 +500,10 @@ elsif($q->param('request') eq "bikes_available"){
#$bw->log("Y bikes_available $varenv{dbname} by c_id $authraw->{c_id}, Tarif: $authraw->{txt30}",$authraw->{txt30},"");
if($varenv{syshost} eq "shareeapp-sx"){
($response->{bikes},my $return2copri->{bikes}) = $si->sig_available($q,\%varenv_prim,\%varenv,$authraw);
($response->{bikes},my $return2copri->{bikes}) = $si->sig_available($q,\%varenv,\%varenv,$authraw);
$tk->sigbike_cupdate($return2copri->{bikes});
}else{
$response->{bikes} = $apif->bikes_available($q,\%varenv_prim,\%varenv,$authraw);
$response->{bikes} = $apif->bikes_available($q,\%varenv,\%varenv,$authraw);
}
}
if(ref($response->{bikes}) ne "HASH"){
@ -760,7 +754,7 @@ elsif($q->param('request') eq "stations_available"){
#sig first save
if($varenv{syshost} eq "shareeapp-sx"){
($response->{stations},my $return2copri->{stations}) = $si->sig_available($q,\%varenv_prim,\%varenv,$authraw);
($response->{stations},my $return2copri->{stations}) = $si->sig_available($q,\%varenv,\%varenv,$authraw);
$tk->sigstation_cupdate($return2copri->{stations});
}else{
my $cachme = $R::cachme || "";

View file

@ -31,6 +31,7 @@ sub ibuttons(){
'barcode' => 'Barcode Label drucken',
'buchen' => 'buchen',
'send_invoice_again' => 'senden',
'email_generate' => 'eMail generieren',
'new_contenttver' => 'Neues Arbeitsprofil',
'new_content' => 'NEUER Datensatz',
'new_contentcms' => 'NEUER Datensatz',
@ -154,8 +155,7 @@ sub event_button(){
my $self = shift;
my ($node_path,$node_name,$main_id,$class,$style,$owner,$url,$icon,$icon_style) = @_;
my $debug = $main_id if($owner && $owner eq $varenv{superu_id});
my $image = "<img src='$icon' style='$icon_style' />" if($icon) || "";
my $button = "<li><a onmousedown='WhichButton(event,\"$url\");' class='$class' style='$style' title='$debug' href='$node_path'>$image $node_name</a></li>";
my $button = "<li><a onmousedown='WhichButton(event,\"$url\");' class='$class' style='$style' title='$debug' href='$node_path'>$node_name</a></li>";
return $button;
}
@ -278,51 +278,6 @@ sub selector_class(){
return $selret;
}
# select tag by id and class onChange
sub selector_byidclass(){
my $self = shift;
my ($column,$byid,$class,$style,$sel,@selval) = @_;
my @selopt = ();
foreach my $opt (@selval){
my $id = $opt;
my $value = $opt;
($id,$value) = split /:/,$opt if($opt =~ /\w+\:.*/);
if($sel && $sel eq $id){
push @selopt, "<option selected value=\"$id\">$value</option>\n";
}else{
push @selopt, "<option value=\"$id\">$value</option>\n";
}
}
#my $selret = "<select id='$byid' class='$class' style='$style' name='$column' onChange='day_mod_save(this)'>@selopt</select>\n";
my $selret = "<select id='$byid' class='$class' style='$style' name='$column'>@selopt</select>\n";
return $selret;
}
# select onChange
sub userselector_onchange(){
my $self = shift;
my $key = shift;
my $selected = shift;
my $users_all = shift;
my $admin_name = shift || "";
my $class = shift || "";
my $style = shift || "";
my @selopt = ();
foreach my $c_id (sort { $users_all->{$a}->{txt08} cmp $users_all->{$b}->{txt08} } keys (%$users_all)){
#print $c_id . "|" . $users_all->{$c_id}->{txt08} . "\n";
$users_all->{$c_id}->{txt08} .= " (Ferien)" if($users_all->{$c_id}->{txt08} eq $admin_name);
if($selected eq $c_id){
push @selopt, "<option selected value='$c_id'>$users_all->{$c_id}->{txt08}</option>\n";
}else{
push @selopt, "<option value='$c_id'>$users_all->{$c_id}->{txt08}</option>\n";
}
}
my $selret = "<select class='$class' style='$style' name='$key' onChange='select_option(this)'>\n@selopt</select>\n";
return $selret;
}
# select2 tag
sub selector2(){
my $self = shift;
@ -348,63 +303,6 @@ sub selector2(){
return $selret;
}
# select3 tag with id:value
sub selector3(){
my $self = shift;
my $tbl_columne = shift;
my $width = shift;
my $height = shift;
my $sel = shift;
my @selval = @_;
my @selopt = ();
foreach my $opt (@selval){
my $id = $opt;
my $value = $opt;
($id,$value) = split /:/,$opt if($opt =~ /\d\:.*/);
#print "$sel =~ /\w+/ && $sel =~ /$id|$value/)<br>";
if($sel && "$sel" =~ /$id|$value/){
push @selopt, "<option selected value=\"$id:$value,\">$value</option>\n";
}else{
push @selopt, "<option value=\"$id:$value,\">$value</option>\n";
}
}
my $multiple = "";
$multiple = "multiple" if($height > 1);
my $selret = "<select $multiple class=\"eselect_multiple\" style=\"width:$width\" size=$height name=\"$tbl_columne\" >\n@selopt</select>\n";
return $selret;
}
#with onchange event
sub selector_onchange(){
my $self = shift;
my $key = shift;
my $width = shift;
my $path = shift;
my $jscript = shift;
my $sel = shift;
my $todo = shift;
my @selval = @_;
my @selopt = ();
foreach my $opt (@selval){
my $id = $opt;
my $value = $opt;
($id,$value) = split /:/,$opt if($opt =~ /\d\:.*/);
my $rid = "$id";
$rid = "$path?change_login=$value" if($todo eq "change_login");
$rid = "$value?$path\&$key=$id" if($key =~ /set_main_id/);
if("$sel" eq "$id"){
push @selopt, "<option selected value=\"$rid\">$value</option>\n";
}else{
push @selopt, "<option value=\"$rid\">$value</option>\n";
}
}
my $selret = "<a><select class=\"eselect\" style=\"width:$width\" size=1 name=\"$key\" onChange=\"$jscript go2select(this)\">@selopt</select></a>\n";
return $selret;
}
sub checkbox_style() {
my $self = shift;
my ($sid_key,$dialog) = @_;

View file

@ -117,7 +117,6 @@ sub update_operatorsloop {
my $adrc_id = shift || 0;
my $todo = shift || "update";
use DBI::Const::GetInfoType;
my $authref = {
table => "contentadr",
fetch => "one",
@ -189,7 +188,63 @@ sub update_operatorsloop {
}
}
return $rows;
}
}#end update_operatorsloop
#CMS-Texte sync primary to operators
sub operators_cms {
my $self = shift;
my $dbname = shift || "";
my $c_id = shift || 0;
my $todo = shift || "update";
my $cmsref = {
table => "contentuser",
fetch => "one",
template_id => "194",
c_id => "$c_id",
};
my $dbh_primary = $self->dbconnect_extern($self->{primary}->{sharee_primary}->{database}->{dbname});
my $record_primary = { c_id => 0 };
$record_primary = $self->fetch_record($dbh_primary,$cmsref) if($c_id && $c_id >= 1000);
my $rows = 0;
if($record_primary->{c_id}){
while (my ($key, $op_name) = each %{ $self->{operator} }) {
if($op_name->{database}->{dbname}){
my $sharee_operator = $op_name->{database}->{dbname};
my $dbh_operator = $self->dbconnect_extern($sharee_operator);
if($todo eq "update"){
$bw->log("UPDATE CMS operator $sharee_operator",$record_primary,"");
my $update = {
%$record_primary,
table => "contentuser",
};
$rows = $self->update_record($dbh_operator,$update,$record_primary);
if($rows != 1){
my $insert = {
%$record_primary,
table => "contentuser",
mtime => 'now()',
};
my $c_id = $self->insert_contentoid($dbh_operator,$insert,"");
$rows = 1 if($c_id);
}
}elsif($todo eq "delete"){
$bw->log("DELETE CMS operator $sharee_operator",$record_primary,"");
$rows += $self->delete_content($dbh_operator,"contentuser",$record_primary->{c_id});
}
}
}
}
return $rows;
}#end operators_cms
#return system and contentadr username by c_id (owner last change)
sub sys_username {
@ -698,7 +753,10 @@ sub fetch_cms {
$langfield = "txt01" if($lang eq "de");
$langfield = "txt02" if($lang eq "en");
$langfield = "txt03" if($lang eq "fr");
my $sql = "SELECT ct_name, coalesce($langfield, txt02, txt01) AS txt FROM contentuser, relation where template_id=194 and c_id=content_id";
my $wand = "";
$wand = "and ct_name like '$fetch->{ct_name}%'" if($fetch->{ct_name});
my $sql = "SELECT ct_name, coalesce($langfield, txt02, txt01) AS txt FROM contentuser, relation where template_id=194 and c_id=content_id $wand";
my $sth = $dbh->prepare($sql);
my $rc = $sth->execute();

View file

@ -431,6 +431,16 @@ sub handler {
$return = $pl->set_accounting2invoice($q,$users_dms,$R::c_id4trans,$R::set_main_id4workflow) if(looks_like_number($R::c_id4trans) && looks_like_number($R::tpl_id4trans) && looks_like_number($R::set_main_id4workflow));
}elsif($R::ct_trans =~ /save_text|save_adr/){
$feedb = $pl->save_text2contenttrans($q,$users_dms,$R::c_id4trans) if(looks_like_number($R::c_id4trans));
}elsif($R::ct_trans =~ /email_generate/){
#TODO
my $sendref = $pl->prepare_email({},{ txt08 => 'xxxx@sharee.bike' }, {}, $varenv{cms}->{$R::email_select}->{txt});
#print Dumper($sendref);
my $email_body = $q->unescapeHTML($sendref->{message});
$email_body =~ s/\r\n/\%0A/g;
$email_body =~ s/\n/\%0A/g;
#print "$email_body";
print redirect("mailto:$sendref->{mail_to}?subject=$sendref->{subject}\&body=$email_body");
exit 0;
}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);

View file

@ -86,13 +86,6 @@ sub mail_transport(){
$subject = "* offline Test * " . $sendref->{subject};
}
#TODO procmail
#Should not used for now by standard invoicing. We will set it only by Zahlungserinnerung/Mahnung.
#Keep in mind, copri mailing will be done by cron or manually by fibu-user
my $sharee_ticket = "";
$sharee_ticket = " [SID " . $1 . "]" if($sendref->{attachment} =~ /([a-z0-9]+\-\d+)\./ && $mail_bcc);
$subject .= $sharee_ticket if($sharee_ticket);
print EMA "\n$now_dt, start mailing to: $mail_to | subject: $subject\n";
print EMA "attachment: $pdfpath/$sendref->{attachment} | filesize: $filesize\n";

View file

@ -41,7 +41,7 @@ sub mobox(){
my $lang = "de";
my $dbh = "";
if($users_dms->{kind_of_trans} && looks_like_number($users_dms->{c_id4trans}) && looks_like_number($users_dms->{tpl_id4trans})){
if(looks_like_number($users_dms->{c_id4trans}) && looks_like_number($users_dms->{tpl_id4trans})){
my $width = $node_meta->{tpl_width} || "990";
my $bg_color = "white";
my $bg_color2 = "#f7ae37" || "";
@ -100,15 +100,15 @@ print<<EOF
EOF
;
print "<div id='dialog-form' style='text-align:center;margin:0;padding:2px;max-width:1200px;' title='Terminal $users_dms->{kind_of_trans} $debug'>";
print "<div id='dialog-form' style='text-align:center;margin:0;padding:2px;max-width:1200px;' title='Terminal Faktura $debug'>";
if($users_dms->{kind_of_trans} && looks_like_number($users_dms->{c_id4trans}) && looks_like_number($users_dms->{tpl_id4trans})){
if(looks_like_number($users_dms->{c_id4trans}) && looks_like_number($users_dms->{tpl_id4trans})){
if($table eq "contenttrans" && $varenv{orga} eq "dms"){
require "Tpl/Address3.pm";
&Address3::tpl($node_meta,$users_dms,$return);
}
}else{
print $q->div({-style=>"padding:0.1em;margin:0em;background-color:white;font-size:0.81em;"}, "Ein neues Formular kann im COPRI Hauptfenster geöffnet werden (Code: $users_dms->{kind_of_trans} && $users_dms->{c_id4trans} && $users_dms->{tpl_id4trans})",
print $q->div({-style=>"padding:0.1em;margin:0em;background-color:white;font-size:0.81em;"}, "Ein neues Formular kann im COPRI Hauptfenster geöffnet werden (Code: $users_dms->{c_id4trans} && $users_dms->{tpl_id4trans})",
"\n");
}

View file

@ -288,6 +288,7 @@ sub save_content {
if($ct->{c_id}){
$feedb->{u_rows} += $dbt->update_record($dbh,$update_ct,$ct);
$dbt->operators_cms($node_meta->{ct_table},$c_id,"update") if($node_meta->{template_id} == 194);
}
return $feedb;
@ -326,11 +327,12 @@ sub delete_content {
my $self = shift;
my $node_meta = shift || "";
my $c_id = shift || "";
my $users_dms = shift;
my $users_dms = shift || "";
my $dbh = "";
my $feedb = { d_rows => 0,message => "" };
if($node_meta->{ct_table},$c_id){
$dbt->operators_cms($node_meta->{ct_table},$c_id,"delete") if($node_meta->{template_id} == 194);
$feedb->{d_rows} = $dbt->delete_content($dbh,$node_meta->{ct_table},$c_id);
}
return $feedb;
@ -1477,5 +1479,49 @@ sub export_csv {
return $feedb;
}
1;
#prepare email by cms markup
#also done in mailTransportcms
sub prepare_email {
my $self = shift;
my $sendref = shift;
my $ctadr = shift;
my $ctt = shift || {};
my $cms_prim = shift;
my $app_name = "Mietrad App";
$app_name = $dbt->{operator}->{$varenv{dbname}}->{app_name};
my $invoice_name = "";
my $sharee_ticket = "";
if(ref($ctt) eq "HASH" && $ctt->{ct_name}){
$invoice_name = "$ctt->{txt00}-$varenv{dbname}-$ctt->{ct_name}.pdf";
$sendref->{attachment} = "$invoice_name";
$sharee_ticket = "[$varenv{dbname}-$ctt->{ct_name}]";
}
my $subject = "TeilRad Mietradsystem";#default
$subject = $1 if($cms_prim =~ /--subject--(.*)--subject--/);
$subject .= " $sharee_ticket" if($sharee_ticket);
$cms_prim =~ s/--subject--$subject--subject--//;
$cms_prim =~ s/\n//;
$cms_prim =~ s/\n//;
$sendref->{mail_to} = $ctadr->{txt08};
$sendref->{c_id} = $ctadr->{c_id};
$sendref->{subject} = $subject;
$sendref->{subject} =~ s/::app_name::/$app_name/;
$sendref->{subject} =~ s/Mein // if($sendref->{subject} =~ /^Mein/);
$sendref->{message} = $cms_prim;
$sendref->{message} =~ s/::user_name::/$ctadr->{txt01}/;
$sendref->{message} =~ s/::app_name::/$app_name/g;
$sendref->{message} =~ s/::invoice_name::/$invoice_name/ if($invoice_name);
$sendref->{message} =~ s/::txid::/$ctt->{txt16}/;
$sendref->{message} =~ s/::email_temppassword::/\<b\>$ctadr->{txt04}\<\/b\>/g;
$sendref->{message} =~ s/::email_ack_digest::/\<b\>$ctadr->{txt34}\<\/b\>/g;#send_emailack
#$sendref->{message} =~ s/\n/\<br \/\>/g;
return $sendref;
}#end prepare_content
1;

View file

@ -102,8 +102,6 @@ sub preinit(){
my $ctt = $db->get_content1($table,$R::c_id4trans);
my $buchen_mtime = $lb->time4de($ctt->{mtime});
#actual-path an get right mandant for verkauf
$R::kind_of_trans = $R::kind_of_trans || $users_dms->{kind_of_trans};
my $mandant_main_id = 100002;
my $parent_trans = $db->get_node3("$mandant_main_id","Faktura","$lang") if($mandant_main_id);
@ -139,10 +137,10 @@ sub preinit(){
#OPEN/CLOSE
if(($R::ct_trans eq "open") && ("$R::kind_of_trans" !~ /Kalender|Mietjournal/)){
$db->update_users4trans($R::c_id4trans,$R::tpl_id4trans,$R::kind_of_trans,$users_dms->{u_id});
if($R::ct_trans eq "open"){
$db->update_users4trans($R::c_id4trans,$R::tpl_id4trans,"",$users_dms->{u_id});
$users_dms = $db->select_users($users_dms->{u_id});
}elsif(($R::ct_trans eq "close") && ("$R::kind_of_trans" !~ /Kalender|Mietjournal/)){
}elsif($R::ct_trans eq "close"){
$db->update_users4trans("0","0","",$users_dms->{u_id});
$users_dms = $db->select_users($users_dms->{u_id});
}
@ -170,14 +168,7 @@ sub preinit(){
$db->update_content4change($table,$c_idnew,"",$parent_trans->{parent_id},"int09");#mandant_main_id
$db->update_content4change($table,$c_idnew,"",$node->{main_id},"int12");#zusätzl. Formtyp
$db->update_content4change($table,$c_idnew,"",$node->{node_name},"txt00");#node_name
$db->update_content4change($table,$c_idnew,"",$today4db,"start_time") if($R::kind_of_trans =~ /Faktur|Verleih/);
$db->update_content4change($table,$c_idnew,"",$today4db,"end_time") if($R::kind_of_trans =~ /Faktur|Verleih/);
$db->update_users4trans($c_idnew,$R::tpl_id4trans,$R::kind_of_trans,$users_dms->{u_id}) if("$R::kind_of_trans" !~ /Kalender|Mietjournal/);
if($ib_key eq "new_trans"){
$db->update_content4change($table,$c_idnew,"","txt63","txt21");#Text-1
$db->update_content4change($table,$c_idnew,"","Barkunde","txt01") if($varenv{wwwhost} =~ /lx-rad/);
$db->update_content4change($table,$c_idnew,"","txt61,txt63","txt21") if($R::kind_of_trans =~ /Faktur|Verleih/);#Text-3
}
$db->update_users4trans($c_idnew,$R::tpl_id4trans,"",$users_dms->{u_id});
}else{
return "failure::Fehler, Datensatz kann nicht angelegt werden weil folgende Informationen fehlen: ($main_id)";
}
@ -230,36 +221,8 @@ sub preinit(){
#print "@keywords ";
if($ib_key =~ /save/){
$c_id = $R::c_id if($ib_key eq "save");#only in journal edit
$db->users_up("c_id4edit","0","$users_dms->{u_id}");#delete edit marker
my $table = "contenttrans";
#Maybe obsolete, because of ajax autosave --> for now back to old
#print "$ib_key|$R::ct_trans2c_idadr|$R::c_idadr";
if($ib_key eq "save_adr" && $R::ct_trans2c_idadr eq "save_contentadr" && $R::c_idadr =~ /^\d+$/){
$table = "contentadr";
$c_id = "$R::c_idadr";
}elsif($ib_key eq "save_adr" && $R::ct_trans2c_idadr eq "save_contentadr"){
# #like new_adr in Premain.pm
$table = "contentadr";
my $foreign_key="ca_id";
my $barcode_last = $db->get_barcode("users","$table");#hier gilt: $table=column in users
my $freenr = $lb->get_freenr($table,$barcode_last->{$table});
($ct_name,$barcode) = $lb->barcodeable($table,$freenr);#new nr routine
if($barcode){
$db->users_up("$table","$barcode",$users_dms->{u_id});
}else{
return "failure::Fehler, neue Nummer kann nicht generiert werden";
}
if($users_dms->{kind_of_trans}){
$rel = $db->get_rel4tpl("200011",$lang);
$c_idnew = $db->insert_content2($table,$ct_name,$users_dms->{u_id},"");
$i_rows += 1 if($c_idnew > 0);
$db->update_barcode($table,$c_idnew,$ct_name,$barcode);
my $rel_id = $db->insert_relationlist($table,$rel->{main_id},$lang,$c_idnew,$rel->{tpl_id},$foreign_key);
$c_id = $c_idnew; #for contenadr update
$R::c_idadr = $c_idnew; #for copy contentadr to contenttrans
}
#Freitext oder nur in contentrans speichern
}elsif($ib_key eq "save_adr" || $ib_key =~ /save_text/){
if($ib_key eq "save_adr" || $ib_key =~ /save_text/){
$table = "contenttrans";
$c_id = "$R::c_id4trans";
}elsif($ib_key eq "save_pos"){
@ -428,9 +391,9 @@ sub preinit(){
#differenz, es wird nur der zuwachs verwendet
$ct_exist2->{$_} = 0 if(!$ct_exist2->{$_});
$add_menge = - $ct_exist2->{$_} + $intxx if($op eq "+");
my $rows = $db->update_content4comp("contenttranspos",$R::ct_name,$R::c_idpos,"$op","$add_menge","$R::kind_of_trans");
my $rows = $db->update_content4comp("contenttranspos",$R::ct_name,$R::c_idpos,"$op","$add_menge","");
if($rows){
$u_rows += $db->update_content4comp("content",$R::ct_name,"$R::cc_id","-","$add_menge","$R::kind_of_trans","$ct_exist2->{txt12}");
$u_rows += $db->update_content4comp("content",$R::ct_name,"$R::cc_id","-","$add_menge","","");
}
}else{
$u_rows +=$db->updater("$table","c_id",$c_id,"$_","$valxx");
@ -498,7 +461,7 @@ sub preinit(){
$d_rows += $db->delete_content("$table","$pos_id");
$db->users_up("ctpos_activ","0",$users_dms->{u_id}) if("$pos_id" eq "$users_dms->{ctpos_activ}");
$ct_name = $1 if($R::ct_name =~ /^(\d+)/);
$u_rows += $db->update_content4comp("content",$ct_name,"$cttpos->{cc_id}","+","$cttpos->{int03}","$R::kind_of_trans","$cttpos->{txt12}");
$u_rows += $db->update_content4comp("content",$ct_name,"$cttpos->{cc_id}","+","$cttpos->{int03}","","");
}
###

View file

@ -307,7 +307,7 @@ sub counting_rental {
$return->{rentalog}->{used_methode} = "$used_methode";
$return->{rentalog}->{counting} = $counting;
#$bw->log("Pricing counting_rental return:",$return,"");
$bw->log("Pricing counting_rental return:",$return,"");
return ($return,$counting);
}#end counting_rental

View file

@ -65,6 +65,7 @@ sub tpl(){
c_id => $users_dms->{c_id4trans},
};
$ctt = $dbt->fetch_record($dbh,$pref);
my $praefix = "$ctt->{txt00}-$varenv{praefix}";
my $warn_time = $ctt->{warn_time} || "";
$warn_time = $lb->time4de($warn_time,0) if($warn_time);
@ -149,10 +150,10 @@ EOF
$journalhead = "<br /><span style='color:silver;font-size:0.81em;'>Journal</span>" if($ctt->{template_id} == 209);
$set_main_id=$main_id if($ctt->{main_id} > "300000");
print $q->hidden(-name=>'set_main_id', -override=>'1', -value=>"$set_main_id");
print $q->span({-style=>'margin:0em 0.5em 0 0.5em;padding:0.5em 3em;background-color:white;border:solid thin gray;position:absolute;left:3px;'}, "$ctt->{txt00} $journalhead");
print $q->span({-style=>'margin:0em 0.5em 0 0.5em;padding:0.2em 1em;background-color:white;border:solid thin gray;position:absolute;left:3px;'}, "$ctt->{txt00} $varenv{praefix}-$ctt->{ct_name} $journalhead");
print "<span style='margin:0 0.2em;position:absolute;left:180px;'>\n";
print $q->b({-style=>'padding:0 1em;'}, "\# $ctt->{ct_name}"), "\n";
print "<span style='margin:0 0.2em;position:absolute;left:280px;'>\n";
#print $q->b({-style=>'padding:0 1em;'}, "\# $ctt->{ct_name}"), "\n";
if($ctt->{ct_name} =~ /\d+/ && $ctt->{txt00} eq "Storno"){
print $but->singlesubmit3("ct_trans","set_workflow2invoice","","",""),"\n";
print $q->hidden(-name=>'set_main_id4workflow', -override=>'1', -value=>"300008"), "\n";
@ -168,7 +169,6 @@ EOF
print "</span>\n";
my $praefix = "$ctt->{txt00}-$varenv{praefix}";
if(!$journalhead && (!looks_like_number($ctt->{int01}) || $ctt->{ct_name} =~ /-/)){
print $q->span({-style=>'margin:0 0.2em;position:absolute;right:3px;'}, $but->singlesubmit7("ct_trans","remove_chk4rel","$ib{remove_chk4rel}","")),"\n";
print $q->hidden(-name=>'c_id', -override=>'1', -value=>"$ctt->{content_id}");
@ -178,7 +178,7 @@ EOF
}elsif(looks_like_number($ctt->{int01}) && ! -f "$varenv{basedir}/pdfinvoice/$praefix-$ctt->{ct_name}.pdf"){
print $q->span({-style=>'margin:0 0.2em;position:absolute;right:3px;'}, $but->singlesubmit3("ct_trans","print_pdf","","","")),"\n";
}
print $q->span({-style=>'margin:0 0.2em;position:absolute;right:100px;'}, "$buchen_users->{txt01} / $invoice_time "),"\n";
print $q->span({-style=>'margin:0 0.2em;padding:0.3em;font-size:0.81em;position:absolute;right:100px;'}, "$buchen_users->{txt01} / $invoice_time "),"\n";
print "</div>\n";
print $q->hidden(-name=>'owner', -override=>'1', -value=>"$users_dms->{owner}");
@ -217,7 +217,7 @@ EOF
$journal = "<span style='color:silver;background-color:white;'>Journal </span>" if($ctt_rel->{$id}->{template_id} == 209);
my $rel_opos = "";
$rel_opos = "<span style='color:red'>&bull;</span>" if($ctt_rel->{$id}->{int14});
print $q->div({-style=>"position:absolute;top:$toppx;right:10px;font-size:0.91em;background-color:$rel_color"}, "$journal ", $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"},"[ $rel_opos $ctt_rel->{$id}->{txt00} #$ctt_rel->{$id}->{ct_name} ]")),"\n";
print $q->div({-style=>"position:absolute;top:$toppx;right:10px;font-size:0.91em;background-color:$rel_color"}, "$journal ", $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"},"[ $rel_opos $ctt_rel->{$id}->{txt00} $varenv{praefix}-$ctt_rel->{$id}->{ct_name} ]")),"\n";
$top += 22;
}
}

View file

@ -310,7 +310,7 @@ sub tpl(){
my $cttrans = $dbt->fetch_record($dbh,$pref);
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:#f7ae37"},$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";
print $q->div({-style=>"position:absolute;top:$toppx;right:20px;"}, " TXID $cttrans->{$id}->{txt16} ",$q->span({-style=>"background-color:#f7ae37"},$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}\&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){

View file

@ -486,7 +486,7 @@ sub tpl(){
}
if($users_dms_primary->{u_id} && $users_dms->{u_id} && $users_dms->{int03} >= 1){
print $q->div({-style=>'float:left;margin-left:1em;'}, "&rarr; Faktura", $q->a({-class=>"linknav3",-style=>"$trans_style",-href=>"/DMS/Faktura?ct_trans=open\&c_id4trans=$c_id4trans\&tpl_id4trans=$tpl_id4trans\&kind_of_trans=Faktura\&owner=$users_dms->{owner}",-title=>"Faktura Terminal öffnen"},"$opos \#$ct_name")),"\n" if($c_id4trans && $tpl_id4trans);
print $q->div({-style=>'float:left;margin-left:1em;'}, "&rarr; Faktura", $q->a({-class=>"linknav3",-style=>"$trans_style",-href=>"/DMS/Faktura?ct_trans=open\&c_id4trans=$c_id4trans\&tpl_id4trans=$tpl_id4trans\&owner=$users_dms->{owner}",-title=>"Faktura Terminal öffnen"},"$opos \#$ct_name")),"\n" if($c_id4trans && $tpl_id4trans);
print $q->div({-style=>'float:left;margin-left:1em;'}, "$user_device"),"\n";
}

View file

@ -621,7 +621,7 @@ EOF
}
print $q->td({-class=>'search_line'},$but->selector_class("s_$key","","",$s_val,@s_valxx)),"\n";
}elsif($size =~ /select|readonly/ && $key !~ /txt23|txt24/){#txt23=color-code or txt24=Flotten ID select
}elsif($size =~ /select|readonly/ && $key !~ /txt23|txt24|int04/){#txt23=color-code or txt24=Flotten ID select
my @s_valxx = ("");
my $s_hash = {};
$s_hash = $dbt->{copri_conf}->{lock_state} if($tpl_id == 205 && $key eq "int20");
@ -635,7 +635,7 @@ EOF
push @s_valxx, "$s_key:$s_hash->{$s_key}";#[2:unlocked]
}
if(scalar @s_valxx < 2){
print $q->td({-class=>'search_line',readonly=>},""),"\n";
print $q->td({-class=>'search_line',readonly=>1},""),"\n";
}else{
print $q->td({-class=>'search_line'},$but->selector_class("s_$key","","",$s_val,@s_valxx)),"\n";
}
@ -959,7 +959,7 @@ EOF
if($table =~ /contenttrans|contenttver/){
my $opos = "";
$opos = "<span style='color:red'>&bull;</span>" if($ct4rel->{$id}->{int14});
print $q->td({-class=>'tdint',-style=>"font-weight:normal;$set_style4nr", -nowrap=>1},$q->a({-class=>"linknav3",-href=>"?ct_trans=open\&mode=manager\&c_id4trans=$ct4rel->{$id}->{c_id}\&tpl_id4trans=$ct4rel->{$id}->{template_id}\&kind_of_trans=$node_meta->{node_name}\&owner=$users_dms->{u_id}\&offset=$searchref->{offset}\&limit=$searchref->{limit}",-title=>"Terminal öffnen"},"$opos $ct4rel->{$id}->{$key}"));
print $q->td({-class=>'tdint',-style=>"font-weight:normal;$set_style4nr", -nowrap=>1},$q->a({-class=>"linknav3",-href=>"?ct_trans=open\&mode=manager\&c_id4trans=$ct4rel->{$id}->{c_id}\&tpl_id4trans=$ct4rel->{$id}->{template_id}\&owner=$users_dms->{u_id}\&offset=$searchref->{offset}\&limit=$searchref->{limit}",-title=>"Terminal öffnen"},"$opos $ct4rel->{$id}->{$key}"));
}elsif($table =~ /content$|contentadr|contentnel/){
print $q->td({-class=>"tdint",-style=>"font-weight:normal;$set_style4nr"},$q->a({-class=>"linknav3",-href=>"?node2edit=editpart\&mode=manager\&rel_id=$ct4rel->{$id}->{rel_id}\&offset=$searchref->{offset}\&limit=$searchref->{limit}",-title=>"Terminal öffnen"},"$ct4rel->{$id}->{$key}")),"\n";
}elsif(($node_meta->{tpl_order} !~ /barcode/) || ("$ct4rel->{$id}->{$key}" ne "$ct4rel->{$id}->{barcode}")){
@ -989,7 +989,7 @@ EOF
}
print "</td>\n";
}elsif($key =~ /txt01/ && $table =~ /contenttrans|contenttver/){
print $q->td({-class=>'tdtxt',-style=>"font-weight:normal;$set_style4nr"},$q->a({-class=>"linknav3",-href=>"?ct_trans=open\&mode=manager\&c_id4trans=$ct4rel->{$id}->{c_id}\&tpl_id4trans=$ct4rel->{$id}->{template_id}\&kind_of_trans=$node_meta->{node_name}\&owner=$users_dms->{u_id}\&offset=$searchref->{offset}\&limit=$searchref->{limit}",-title=>"Terminal öffnen"},"$ct4rel->{$id}->{$key}")),"\n";
print $q->td({-class=>'tdtxt',-style=>"font-weight:normal;$set_style4nr"},$q->a({-class=>"linknav3",-href=>"?ct_trans=open\&mode=manager\&c_id4trans=$ct4rel->{$id}->{c_id}\&tpl_id4trans=$ct4rel->{$id}->{template_id}\&owner=$users_dms->{u_id}\&offset=$searchref->{offset}\&limit=$searchref->{limit}",-title=>"Terminal öffnen"},"$ct4rel->{$id}->{$key}")),"\n";
}elsif($key =~ /txt01/ && $table =~ /content$|contentadr/){# && $lock_system != 3){
my $txt01 = "---";

View file

@ -181,11 +181,7 @@ EOF
$pri->count_freedrental($q,\%varenv,$ctadr->{c_id},$cttpos->{$id});
($pricing,$counting) = $pri->counting_rental(\%varenv,$cttpos->{$id});
my $dbh_primary = $dbt->dbconnect_extern($dbt->{primary}->{sharee_primary}->{database}->{dbname});
my %varenv_prim = ();
$varenv_prim{cms} = $dbt->fetch_cms($dbh_primary,{ lang => $q->escapeHTML($lang) });
$rental_feed = $pri->fetch_rentalfeed(\%varenv_prim,\%varenv,$cttpos->{$id},$counting);
$rental_feed = $pri->fetch_rentalfeed(\%varenv,\%varenv,$cttpos->{$id},$counting);
$sum_parts19 += $pricing->{total_price};
$gesamt = $pri->round($pricing->{total_price});
$gesamt = sprintf('%.2f', $gesamt);
@ -644,20 +640,33 @@ EOF
print $q->hidden(-name=>'tpl_id4trans', -override=>'1', -value=>"$ctt->{template_id}"),"\n";
print $q->hidden(-name=>'offset', -override=>'1', -value=>"$R::offset"),"\n" if($R::offset);
print $q->hidden(-name=>'limit', -override=>'1', -value=>"$R::limit"),"\n" if($R::limit);
print $q->div({-style=>"padding:0.5em;font-size:0.81em;width:98%;text-align:right;"}, "eMail wurde nicht versandt! $ctt->{txt00} eMail ", $but->singlesubmit1("ct_trans","send_invoice_again","send_invoice_again")),"\n" if($users_dms->{u_id} == $dbt->{copri_conf}->{superu_id});
print $q->div({-style=>"padding:0.5em;font-size:0.81em;width:98%;text-align:right;"}, "eMail wurde nicht versandt! $ctt->{txt00} eMail ", $but->singlesubmit1("ct_trans","send_invoice_again","")),"\n" if($users_dms->{u_id} == $dbt->{copri_conf}->{superu_id});
print $q->end_form;
}
#TODO
if(1==2){
if(1==2 && "$varenv{praefix}-$ctt->{ct_name}" =~ /\d+/){
my $sharee_ticket = "";
my $subject = "";
if("$praefix-$ctt->{ct_name}" =~ /([a-z0-9]+\-\d+)/){
$sharee_ticket = " [SID " . $1 . "]";
$subject .= $sharee_ticket if($sharee_ticket);
$sharee_ticket = " [$varenv{praefix}-$ctt->{ct_name}]";
$subject .= $sharee_ticket if($sharee_ticket);
$varenv{cms} = $dbt->fetch_cms($dbh,{ lang => 'de' });
my @_valxx = ("");
foreach my $rid (sort { $varenv{cms}->{$a}->{ct_name} cmp $varenv{cms}->{$b}->{ct_name} } keys (%{$varenv{cms}})){
push (@_valxx, "$varenv{cms}->{$rid}->{ct_name}:$varenv{cms}->{$rid}->{ct_name}");
}
print $q->div({-style=>"padding:0.5em;font-size:0.91em;width:98%;text-align:left;"}, "eMail subject: $subject"),"\n";
#print $q->start_form(-action=>'mailto:xxxx@sharee.bike', -method=>'GET'),"\n";
print $q->start_form(),"\n";
print $q->hidden(-name=>'c_id4trans', -override=>'1', -value=>"$ctt->{content_id}"),"\n";
print $q->hidden(-name=>'tpl_id4trans', -override=>'1', -value=>"$ctt->{template_id}"),"\n";
print $q->hidden(-name=>'offset', -override=>'1', -value=>"$R::offset"),"\n" if($R::offset);
print $q->hidden(-name=>'limit', -override=>'1', -value=>"$R::limit"),"\n" if($R::limit);
print $q->hidden(-name=>'mailto', -value=>"xxxx\@sharee.bike"),"\n";
print $q->hidden(-name=>'subject', -value=>"xxxx"),"\n";
print $q->div({-style=>"padding:0.5em;font-size:0.91em;width:98%;text-align:left;"}, $but->selector_class("email_select","eselect","width:250px;",$ctt->{txt31},@_valxx), $but->singlesubmit1("ct_trans","email_generate","")),"\n";
print $q->end_form;
}

View file

@ -506,13 +506,16 @@ sub prepare_content {
#}
$app_name = $dbt->{operator}->{$varenv{dbname}}->{app_name};
my $invoice_name = "";
my $sharee_ticket = "";
if(ref($ctt) eq "HASH" && $ctt->{ct_name}){
$invoice_name = "$ctt->{txt00}-$varenv{dbname}-$ctt->{ct_name}.pdf";
$sendref->{attachment} = "$invoice_name";
$sharee_ticket = "[$varenv{dbname}-$ctt->{ct_name}]";
}
my $subject = "TeilRad Mietradsystem";#default
$subject = $1 if($cms_prim =~ /--subject--(.*)--subject--/);
$subject .= " $sharee_ticket" if($sharee_ticket);
$cms_prim =~ s/--subject--$subject--subject--//;
$cms_prim =~ s/\n//;
$cms_prim =~ s/\n//;