Revision cb2abccd
Von Sven Schöling vor fast 13 Jahren hinzugefügt
SL/DB/Contact.pm | ||
---|---|---|
14 | 14 |
# Creates get_all, get_all_count, get_all_iterator, delete_all and update_all. |
15 | 15 |
__PACKAGE__->meta->make_manager_class; |
16 | 16 |
|
17 |
sub used { |
|
18 |
my ($self) = @_; |
|
19 |
|
|
20 |
return unless $self->cp_id; |
|
21 |
|
|
22 |
require SL::DB::Order; |
|
23 |
require SL::DB::Invoice; |
|
24 |
require SL::DB::PurchaseInvoice; |
|
25 |
require SL::DB::DeliveryOrder; |
|
26 |
|
|
27 |
return SL::DB::Manager::Order->get_all_count(query => [ cp_id => $self->cp_id ]) |
|
28 |
+ SL::DB::Manager::Invoice->get_all_count(query => [ cp_id => $self->cp_id ]) |
|
29 |
+ SL::DB::Manager::PurchaseInvoice->get_all_count(query => [ cp_id => $self->cp_id ]) |
|
30 |
+ SL::DB::Manager::DeliveryOrder->get_all_count(query => [ cp_id => $self->cp_id ]); |
|
31 |
} |
|
32 |
|
|
33 |
sub detach { |
|
34 |
$_[0]->cp_cv_id(undef); |
|
35 |
$_[0]->save; |
|
36 |
} |
|
37 |
|
|
17 | 38 |
sub full_name { |
18 | 39 |
my ($self) = @_; |
19 | 40 |
die 'not an accessor' if @_ > 1; |
bin/mozilla/ct.pl | ||
---|---|---|
51 | 51 |
use SL::CVar; |
52 | 52 |
use SL::DB::Business; |
53 | 53 |
use SL::DB::Default; |
54 |
use SL::Helper::Flash; |
|
54 | 55 |
use SL::ReportGenerator; |
55 | 56 |
|
56 | 57 |
require "bin/mozilla/common.pl"; |
... | ... | |
730 | 731 |
} |
731 | 732 |
|
732 | 733 |
sub delete_contact { |
733 |
$main::lxdebug->enter_sub(); |
|
734 |
|
|
735 |
$main::auth->assert('customer_vendor_edit'); |
|
734 |
$::lxdebug->enter_sub; |
|
735 |
$::auth->assert('customer_vendor_edit'); |
|
736 | 736 |
|
737 |
my $form = $main::form; |
|
738 |
my %myconfig = %main::myconfig; |
|
737 |
CT->get_contact(\%::myconfig, $::form); |
|
739 | 738 |
|
740 |
CT->get_contact(\%myconfig, \%$form);
|
|
739 |
my $contact = SL::DB::Manager::Contact->find_by(cp_id => $::form->{cp_id});
|
|
741 | 740 |
|
742 |
unless ($form->{cp_used}) { |
|
743 |
CT->delete_contact($form->{cp_id}); |
|
744 |
@$form{ grep /^cp_/, keys %$form } = undef; |
|
741 |
if ($contact->used) { |
|
742 |
$contact->detach; |
|
743 |
flash('info', $::locale->text('Contact is in use and was flagged invalid.')); |
|
744 |
} else { |
|
745 |
$contact->delete; |
|
746 |
flash('info', $::locale->text('Contact deleted.')); |
|
745 | 747 |
} |
748 |
delete $::form->{$_} for grep /^cp_/, keys %$::form; |
|
746 | 749 |
|
747 | 750 |
edit(); |
748 | 751 |
|
749 |
$main::lxdebug->leave_sub();
|
|
752 |
$::lxdebug->leave_sub;
|
|
750 | 753 |
} |
751 | 754 |
|
752 | 755 |
sub ajax_autocomplete { |
bin/mozilla/do.pl | ||
---|---|---|
266 | 266 |
if ($form->{"project_id_$_"}); } (1..$form->{"rowcount"})); |
267 | 267 |
|
268 | 268 |
my $vc = $form->{vc} eq "customer" ? "customers" : "vendors"; |
269 |
$form->get_lists("contacts" => "ALL_CONTACTS", |
|
270 |
"shipto" => "ALL_SHIPTO", |
|
269 |
$form->get_lists("shipto" => "ALL_SHIPTO", |
|
271 | 270 |
"projects" => { |
272 | 271 |
"key" => "ALL_PROJECTS", |
273 | 272 |
"all" => 0, |
... | ... | |
280 | 279 |
"departments" => "ALL_DEPARTMENTS", |
281 | 280 |
"business_types" => "ALL_BUSINESS_TYPES", |
282 | 281 |
); |
282 |
$::form->{ALL_CONTACTS} = SL::DB::Manager::Contact->get_all(query => [ |
|
283 |
or => [ |
|
284 |
cp_cv_id => $::form->{"$::form->{vc}_id"} * 1, |
|
285 |
and => [ |
|
286 |
cp_cv_id => undef, |
|
287 |
cp_id => $::form->{cp_id} * 1 |
|
288 |
] |
|
289 |
] |
|
290 |
]); |
|
283 | 291 |
|
284 | 292 |
map { $_->{value} = "$_->{description}--$_->{id}" } @{ $form->{ALL_DEPARTMENTS} }; |
285 | 293 |
map { $_->{value} = "$_->{name}--$_->{id}" } @{ $form->{ALL_VC} }; |
bin/mozilla/ir.pl | ||
---|---|---|
283 | 283 |
my @old_project_ids = ($form->{"globalproject_id"}); |
284 | 284 |
map { push @old_project_ids, $form->{"project_id_$_"} if $form->{"project_id_$_"}; } 1..$form->{"rowcount"}; |
285 | 285 |
|
286 |
$form->get_lists("contacts" => "ALL_CONTACTS", |
|
287 |
"shipto" => "ALL_SHIPTO", |
|
286 |
$form->get_lists("shipto" => "ALL_SHIPTO", |
|
288 | 287 |
"projects" => { "key" => "ALL_PROJECTS", |
289 | 288 |
"all" => 0, |
290 | 289 |
"old_id" => \@old_project_ids }, |
... | ... | |
295 | 294 |
"departments" => "all_departments", |
296 | 295 |
"price_factors" => "ALL_PRICE_FACTORS"); |
297 | 296 |
|
297 |
$TMPL_VAR{ALL_CONTACTS} = SL::DB::Manager::Contact->get_all(query => [ |
|
298 |
or => [ |
|
299 |
cp_cv_id => $::form->{"$::form->{vc}_id"} * 1, |
|
300 |
and => [ |
|
301 |
cp_cv_id => undef, |
|
302 |
cp_id => $::form->{cp_id} * 1 |
|
303 |
] |
|
304 |
] |
|
305 |
]); |
|
298 | 306 |
$TMPL_VAR{sales_employee_labels} = sub { $_[0]->{name} || $_[0]->{login} }; |
299 | 307 |
# $TMPL_VAR{shipto_labels} = sub { join "; ", grep { $_ } map { $_[0]->{"shipto${_}" } } qw(name department_1 street city) }; |
300 |
$TMPL_VAR{contact_labels} = sub { join(', ', $_[0]->{"cp_name"}, $_[0]->{"cp_givenname"}) . ($_[0]->{cp_abteilung} ? " ($_[0]->{cp_abteilung})" : "") }; |
|
301 | 308 |
$TMPL_VAR{department_labels} = sub { "$_[0]->{description}--$_[0]->{id}" }; |
302 | 309 |
|
303 | 310 |
# customer |
bin/mozilla/is.pl | ||
---|---|---|
300 | 300 |
my @old_project_ids = ($form->{"globalproject_id"}); |
301 | 301 |
map { push @old_project_ids, $form->{"project_id_$_"} if $form->{"project_id_$_"}; } 1..$form->{"rowcount"}; |
302 | 302 |
|
303 |
$form->get_lists("contacts" => "ALL_CONTACTS", |
|
304 |
"shipto" => "ALL_SHIPTO", |
|
303 |
$form->get_lists("shipto" => "ALL_SHIPTO", |
|
305 | 304 |
"projects" => { "key" => "ALL_PROJECTS", |
306 | 305 |
"all" => 0, |
307 | 306 |
"old_id" => \@old_project_ids }, |
... | ... | |
313 | 312 |
"departments" => "all_departments", |
314 | 313 |
"price_factors" => "ALL_PRICE_FACTORS"); |
315 | 314 |
|
315 |
$TMPL_VAR{ALL_CONTACTS} = SL::DB::Manager::Contact->get_all(query => [ |
|
316 |
or => [ |
|
317 |
cp_cv_id => $::form->{"$::form->{vc}_id"} * 1, |
|
318 |
and => [ |
|
319 |
cp_cv_id => undef, |
|
320 |
cp_id => $::form->{cp_id} * 1 |
|
321 |
] |
|
322 |
] |
|
323 |
]); |
|
316 | 324 |
$TMPL_VAR{sales_employee_labels} = sub { $_[0]->{name} || $_[0]->{login} }; |
317 | 325 |
$TMPL_VAR{shipto_labels} = sub { join "; ", grep { $_ } map { $_[0]->{"shipto${_}" } } qw(name department_1 street city) }; |
318 |
$TMPL_VAR{contact_labels} = sub { join(', ', $_[0]->{"cp_name"}, $_[0]->{"cp_givenname"}) . ($_[0]->{cp_abteilung} ? " ($_[0]->{cp_abteilung})" : "") }; |
|
319 | 326 |
$TMPL_VAR{department_labels} = sub { "$_[0]->{description}--$_[0]->{id}" }; |
320 | 327 |
|
321 | 328 |
# customer |
bin/mozilla/oe.pl | ||
---|---|---|
327 | 327 |
my @old_project_ids = ($form->{"globalproject_id"}, grep { $_ } map { $form->{"project_id_$_"} } 1..$form->{"rowcount"}); |
328 | 328 |
|
329 | 329 |
my $vc = $form->{vc} eq "customer" ? "customers" : "vendors"; |
330 |
$form->get_lists("contacts" => "ALL_CONTACTS", |
|
331 |
"shipto" => "ALL_SHIPTO", |
|
330 |
$form->get_lists("shipto" => "ALL_SHIPTO", |
|
332 | 331 |
"projects" => { "key" => "ALL_PROJECTS", |
333 | 332 |
"all" => 0, |
334 | 333 |
"old_id" => \@old_project_ids }, |
... | ... | |
343 | 342 |
"price_factors" => "ALL_PRICE_FACTORS"); |
344 | 343 |
|
345 | 344 |
# label subs |
345 |
$TMPL_VAR{ALL_CONTACTS} = SL::DB::Manager::Contact->get_all(query => [ |
|
346 |
or => [ |
|
347 |
cp_cv_id => $::form->{"$::form->{vc}_id"} * 1, |
|
348 |
and => [ |
|
349 |
cp_cv_id => undef, |
|
350 |
cp_id => $::form->{cp_id} * 1 |
|
351 |
] |
|
352 |
] |
|
353 |
]); |
|
346 | 354 |
$TMPL_VAR{sales_employee_labels} = sub { $_[0]->{name} || $_[0]->{login} }; |
347 | 355 |
$TMPL_VAR{shipto_labels} = sub { join "; ", grep { $_ } map { $_[0]->{"shipto${_}" } } qw(name department_1 street city) }; |
348 |
$TMPL_VAR{contact_labels} = sub { join(', ', $_[0]->{"cp_name"}, $_[0]->{"cp_givenname"}) . ($_[0]->{cp_abteilung} ? " ($_[0]->{cp_abteilung})" : "") }; |
|
349 | 356 |
$TMPL_VAR{department_labels} = sub { "$_[0]->{description}--$_[0]->{id}" }; |
350 | 357 |
|
351 | 358 |
# vendor/customer |
locale/de/all | ||
---|---|---|
417 | 417 |
'Confirmation' => 'Auftragsbestätigung', |
418 | 418 |
'Contact' => 'Kontakt', |
419 | 419 |
'Contact Person' => 'Ansprechpartner', |
420 |
'Contact deleted.' => 'Ansprechpartner gelöscht.', |
|
421 |
'Contact is in use and was flagged invalid.' => 'Ansprechpartner ist noch in Verwendung, und wurde als ungültig markiert.', |
|
420 | 422 |
'Contact person (surname)' => 'Ansprechpartner (Nachname)', |
421 | 423 |
'Contacts' => 'Ansprechpartner', |
422 | 424 |
'Continue' => 'Weiter', |
templates/webpages/ct/_contact.html | ||
---|---|---|
1 | 1 |
[% USE L %][% USE HTML %][% USE T8 %][% USE LxERP %] |
2 |
<table id="contact_table">
|
|
2 |
<table> |
|
3 | 3 |
<input type="hidden" name="cp_id" value="[% HTML.escape(cp_id) %]"> |
4 | 4 |
<tr> |
5 | 5 |
<th align="left">[% 'Contacts' | $T8 %]</th> |
6 | 6 |
<td> |
7 | 7 |
[%- L.select_tag('cp_id', L.options_for_select(CONTACTS, default => cp_id, with_empty => 1, empty_title => LxERP.t8('New contact'), value => 'cp_id', title_sub => \contacts_label), |
8 |
onchange => "\$('#contact_table').load('ct.pl?action=get_contact&id=' + \$('#cvid').attr('value') + '&db=' + \$('#db').attr('value') + '&cp_id=' + \$('#cp_id').attr('value'))") %]
|
|
8 |
onchange => "\$('#contacts').load('ct.pl?action=get_contact&id=' + \$('#cvid').attr('value') + '&db=' + \$('#db').attr('value') + '&cp_id=' + \$('#cp_id').attr('value'))") %]
|
|
9 | 9 |
</td> |
10 | 10 |
</tr> |
11 | 11 |
|
... | ... | |
115 | 115 |
<td><input name="bcc" size="40" value="[% HTML.escape(bcc) %]"></td> |
116 | 116 |
</tr> |
117 | 117 |
</table> |
118 |
|
|
119 |
<input type="submit" id="delete_contact" name="action" value="[% 'Delete Contact' | $T8 %]" [% IF cp_used %]'disabled'[% END %]> |
|
120 |
|
|
121 |
<br style="clear: left" /> |
templates/webpages/ct/form_header.html | ||
---|---|---|
314 | 314 |
|
315 | 315 |
<div id="contacts" class="tabcontent"> |
316 | 316 |
[% INCLUDE 'ct/_contact.html' %] |
317 |
|
|
318 |
<input type="submit" id="delete_contact" name="action" value="[% 'Delete Contact' | $T8 %]" disabled> |
|
319 |
<br style="clear: left" /> |
|
320 | 317 |
</div> |
321 | 318 |
|
322 | 319 |
<div id="deliveries" class="tabcontent"> |
templates/webpages/do/form_header.html | ||
---|---|---|
137 | 137 |
[%- HTML.escape(row.cp_name) %][%- IF row.cp_abteilung %] ([% HTML.escape(row.cp_abteilung) %])[% END -%] |
138 | 138 |
[%- END %] |
139 | 139 |
[%- ELSE %] |
140 |
<select name="cp_id" class="fixed_width" > |
|
141 |
<option></option> |
|
142 |
[%- FOREACH row = ALL_CONTACTS %] |
|
143 |
<option value="[% HTML.escape(row.cp_id) %]"[% IF cp_id == row.cp_id %] selected[% END %]> |
|
144 |
[%- HTML.escape(row.cp_name) %][%- IF row.cp_abteilung %] ([% HTML.escape(row.cp_abteilung) %])[% END -%] |
|
145 |
</option> |
|
146 |
[%- END %] |
|
147 |
</select> |
|
140 |
[% L.select_tag('cp_id', L.options_for_select(ALL_CONTACTS, default=cp_id, value='cp_id', title='full_name_dep', with_empty=1), style='width: 250px') %] |
|
148 | 141 |
[%- END %] |
149 | 142 |
</td> |
150 | 143 |
</tr> |
templates/webpages/ir/form_header.html | ||
---|---|---|
54 | 54 |
<tr> |
55 | 55 |
<th align="right">[% 'Contact Person' | $T8 %]</th> |
56 | 56 |
<td> |
57 |
[%- INCLUDE 'generic/multibox.html' |
|
58 |
name = 'cp_id', |
|
59 |
style = 'width: 250px', |
|
60 |
DATA = ALL_CONTACTS, |
|
61 |
id_key = 'cp_id', |
|
62 |
label_sub = 'contact_labels', |
|
63 |
show_empty = 1 -%] |
|
57 |
[% L.select_tag('cp_id', L.options_for_select(ALL_CONTACTS, default=cp_id, value='cp_id', title='full_name_dep', with_empty=1), style='width: 250px') %] |
|
64 | 58 |
</td> |
65 | 59 |
</tr> |
66 | 60 |
[%- END %] |
templates/webpages/is/form_header.html | ||
---|---|---|
55 | 55 |
<tr> |
56 | 56 |
<th align="right">[% 'Contact Person' | $T8 %]</th> |
57 | 57 |
<td> |
58 |
[% L.select_tag('cp_id', L.options_for_select(ALL_CONTACTS, default=cp_id, value='cp_id', title_sub=\contact_labels, with_empty=1), style='width: 250px') %]
|
|
58 |
[% L.select_tag('cp_id', L.options_for_select(ALL_CONTACTS, default=cp_id, value='cp_id', title='full_name_dep', with_empty=1), style='width: 250px') %]
|
|
59 | 59 |
</td> |
60 | 60 |
</tr> |
61 | 61 |
[%- END %] |
templates/webpages/oe/form_header.html | ||
---|---|---|
58 | 58 |
<tr> |
59 | 59 |
<th align="right">[% 'Contact Person' | $T8 %]</th> |
60 | 60 |
<td> |
61 |
[% L.select_tag('cp_id', L.options_for_select(ALL_CONTACTS, default=cp_id, value='cp_id', title_sub=\contact_labels, with_empty=1), style='width: 250px') %]
|
|
61 |
[% L.select_tag('cp_id', L.options_for_select(ALL_CONTACTS, default=cp_id, value='cp_id', title='full_name_dep', with_empty=1), style='width: 250px') %]
|
|
62 | 62 |
</td> |
63 | 63 |
</tr> |
64 | 64 |
[%- END %] |
Auch abrufbar als: Unified diff
Ansprechpartner löschbar machen.
Ansprechpartner können jetzt gelöscht werden. Ist der Ansprechpartner noch in
verwendung wird eine Nachricht an den User gegeben und der Ansprechpartner nur
auf ungültig gesetzt. Ungültige Ansprechpartner werden in den Belegmasken nicht
angezeigt, es sei denn der Beleg wird aus der Datenbank geholt und der
ungültige Ansprechpartner ist vorausgewählt. Beim ersten Erneuern bei dem ein
anderer Ansprechpartner ausgewählt ist, der ungültige nicht mehr zur Auswahl
gestellt.
Es gibt noch keinen Aufräummechanismus für unbenutzte Zombieansprechpartner in
der Datenbank.
Beim Testen in Bonn hatte ich massive Probleme mit einem Setup unter Ubuntu
10.04 mit Postgres 8.4.10, Perl 5.10.1, DBI 1.609, RDBO 0.785, RDB 0.758, RO
0.856. Kompilierung ist scheinbar ohne erkennbare Zusammenhänge unter CGI und
FCGI schon zur compile time abgestürzt.
Sollten diese Probleme nochmal auftauchen, bitte melden.