Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 0a798196

Von Sven Schöling vor etwa 2 Jahren hinzugefügt

  • ID 0a79819600c8d91d1494b5211665cc05107952f4
  • Vorgänger c96ff612
  • Nachfolger b48877c9

CVar + PriceRule: anlegen/editieren/speichern im Preisregel Controller

Im Moment erlaubt sind alle CVar configs, die:

- irgendwie im Beleg erreichbar sind (alle module ausser Pflichtenhefte)
- und von einem Typ sind die mit dem bestehenden Preisregelsystem
abgebildet werden können. d.h.:

- id mit Picker (part, customer, vendor)
- numerisch (number, integer)
- datetime (date, timestamp)
- und weil Jan das direkt braucht: selectboxen

Unterschiede anzeigen:

SL/Controller/PriceRule.pm
use Rose::Object::MakeMethods::Generic
(
'scalar --get_set_init' => [ qw(models price_rule vc pricegroups partsgroups businesses cvar) ],
'scalar --get_set_init' => [ qw(models price_rule vc pricegroups partsgroups businesses cvar_configs) ],
);
# __PACKAGE__->run_before('check_auth');
......
sub action_add_item_row {
my ($self, %params) = @_;
my $item = SL::DB::PriceRuleItem->new(type => $::form->{type});
my $item = $::form->{type} =~ m{cvar/(\d+)}
? SL::DB::PriceRuleItem->new(type => 'cvar', custom_variable_configs_id => $1)
: SL::DB::PriceRuleItem->new(type => $::form->{type});
my $html = $self->render('price_rule/item', { output => 0 }, item => $item);
......
}
sub all_price_rule_item_types {
SL::DB::Manager::PriceRuleItem->get_all_types($_[0]->vc || $_[0]->price_rule->type);
my $item_types = SL::DB::Manager::PriceRuleItem->get_all_types($_[0]->vc || $_[0]->price_rule->type);
my @cvar_types = map [ "cvar/" . $_->id, $_->presenter->description_with_module ], @{$_[0]->cvar_configs };
[ @$item_types, @cvar_types ];
}
sub add_javascripts {
......
my @items;
for my $raw_item (@$items) {
my $item = $raw_item->{id} ? $old_items{ $raw_item->{id} } || SL::DB::PriceRuleItem->new(id => $raw_item->{id})->load : SL::DB::PriceRuleItem->new;
my $item = $raw_item->{id}
? $old_items{ $raw_item->{id} } || SL::DB::PriceRuleItem->new(id => $raw_item->{id})->load
: SL::DB::PriceRuleItem->new;
$item->assign_attributes(%$raw_item);
push @items, $item;
}
......
SL::DB::Manager::PartsGroup->get_all;
}
sub init_cvar {
# SL::DB::Manager::CustomVariableConfig->get_all_sorted(where => [ module => 'IC' ]);
# proof of concept: hard coded for articlegroup
SL::DB::Manager::CustomVariableConfig->get_first(where => [ module => 'IC', name => 'articlegroup' ]) ;
sub init_cvar_configs {
# eligible cvars for this are all that are reachable from a record or recorditem (all modules but requirement spec)
# and of a type that price rules support (currently: id-based with picker, numeric or date) and by special request select
SL::DB::Manager::CustomVariableConfig->get_all(where => [
"!module" => 'RequirementSpecs',
type => [ qw(timestamp date number integer customer vendor part select) ],
]) ;
}

Auch abrufbar als: Unified diff