Merge branch 'b-3.6.1' of ../kivitendo-erp_20220811
[kivitendo-erp.git] / SL / Controller / DeliveryOrder / TypeData.pm
diff --git a/SL/Controller/DeliveryOrder/TypeData.pm b/SL/Controller/DeliveryOrder/TypeData.pm
new file mode 100644 (file)
index 0000000..0650e08
--- /dev/null
@@ -0,0 +1,101 @@
+package SL::Controller::DeliveryOrder::TypeData;
+
+use strict;
+use Exporter qw(import);
+use Scalar::Util qw(weaken);
+use SL::Locale::String qw(t8);
+use SL::DB::DeliveryOrder::TypeData qw(:types :subs);
+
+my @export_types = qw(SALES_DELIVERY_ORDER_TYPE PURCHASE_DELIVERY_ORDER_TYPE SUPPLIER_DELIVERY_ORDER_TYPE RMA_DELIVERY_ORDER_TYPE);
+
+our @EXPORT_OK = (@export_types);
+our %EXPORT_TAGS = (types => \@export_types);
+
+use Rose::Object::MakeMethods::Generic scalar => [ qw(c) ];
+
+sub new {
+  my ($class, $controller) = @_;
+  my $o = bless {}, $class;
+
+  if ($controller) {
+    $o->c($controller);
+    weaken($o->{c});
+  }
+
+  return $o;
+}
+
+sub validate {
+  my ($self, $string) = @_;
+  validate_type($string);
+}
+
+sub text {
+  my ($self, $string) = @_;
+  get3($self->c->type, "text", $string);
+}
+
+sub show_menu {
+  my ($self, $string) = @_;
+  get3($self->c->type, "show_menu", $string);
+}
+
+sub workflow {
+  my ($self, $string) = @_;
+  get3($self->c->type, "workflow", $string);
+}
+
+sub properties {
+  my ($self, $string) = @_;
+  get3($self->c->type, "properties", $string);
+}
+
+sub access {
+  my ($self, $string) = @_;
+  get3($_[0]->c->type, "rights", $string);
+}
+
+sub is_quotation {
+  get3($_[0]->c->type, "properties", "is_quotation");
+}
+
+sub customervendor {
+  get3($_[0]->c->type, "properties", "customervendor");
+}
+
+sub is_customer {
+  get3($_[0]->c->type, "properties", "is_customer");
+}
+
+sub nr_key {
+  get3($_[0]->c->type, "properties", "nr_key");
+}
+
+sub transfer {
+  get3($_[0]->c->type, "properties", "transfer");
+}
+
+sub part_classification_query {
+  my ($self, $string) = @_;
+  get($self->c->type, "part_classification_query");
+}
+
+sub set_reqdate_by_type {
+  my ($self) = @_;
+
+  if (!$self->c->order->reqdate) {
+    $self->c->order->reqdate(DateTime->today_local->next_workday(extra_days => 1));
+  }
+}
+
+sub get_reqdate_by_type {
+  my ($self, $reqdate, $saved_reqdate) = @_;
+
+  if ($reqdate == $saved_reqdate) {
+    return DateTime->today_local->next_workday(extra_days => 1);
+  } else {
+    return $reqdate;
+  }
+}
+
+1;