1 package SL::DB::DeliveryOrder::TypeData;
 
   5 use Exporter qw(import);
 
   6 use Scalar::Util qw(weaken);
 
   7 use SL::Locale::String qw(t8);
 
  10   SALES_DELIVERY_ORDER_TYPE    => 'sales_delivery_order',
 
  11   PURCHASE_DELIVERY_ORDER_TYPE => 'purchase_delivery_order',
 
  12   SUPPLIER_DELIVERY_ORDER_TYPE => 'supplier_delivery_order',
 
  13   RMA_DELIVERY_ORDER_TYPE      => 'rma_delivery_order',
 
  16 my @export_types = qw(SALES_DELIVERY_ORDER_TYPE PURCHASE_DELIVERY_ORDER_TYPE SUPPLIER_DELIVERY_ORDER_TYPE RMA_DELIVERY_ORDER_TYPE);
 
  17 my @export_subs = qw(valid_types validate_type is_valid_type get get3);
 
  19 our @EXPORT_OK = (@export_types, @export_subs);
 
  20 our %EXPORT_TAGS = (types => \@export_types, subs => \@export_subs);
 
  23   SALES_DELIVERY_ORDER_TYPE() => {
 
  25       delete => t8('Delivery Order has been deleted'),
 
  26       saved  => t8('Delivery Order has been saved'),
 
  27       add    => t8("Add Sales Delivery Order"),
 
  28       edit   => t8("Edit Sales Delivery Order"),
 
  29       attachment => t8("sales_delivery_order_list"),
 
  32       save_and_quotation      => 0,
 
  34       save_and_sales_order    => 0,
 
  35       save_and_purchase_order => 0,
 
  36       save_and_delivery_order => 0,
 
  37       save_and_ap_transaction => 0,
 
  38       save_and_invoice        => 0,
 
  39       delete                  => sub { $::instance_conf->get_sales_delivery_order_show_delete },
 
  42       customervendor => "customer",
 
  46       transnumber    => 'sdonumber',
 
  48     part_classification_query => [ "used_for_sale" => 1 ],
 
  49     right => "sales_delivery_order_edit",
 
  51   PURCHASE_DELIVERY_ORDER_TYPE() => {
 
  53       delete => t8('Delivery Order has been deleted'),
 
  54       saved  => t8('Delivery Order has been saved'),
 
  55       add    => t8("Add Purchase Delivery Order"),
 
  56       edit   => t8("Edit Purchase Delivery Order"),
 
  57       attachment => t8("purchase_delivery_order_list"),
 
  60       save_and_quotation      => 0,
 
  62       save_and_sales_order    => 0,
 
  63       save_and_purchase_order => 0,
 
  64       save_and_delivery_order => 0,
 
  65       save_and_ap_transaction => 0,
 
  66       save_and_invoice        => 0,
 
  67       delete                  => sub { $::instance_conf->get_sales_delivery_order_show_delete },
 
  70       customervendor => "vendor",
 
  74       transnumber    => 'pdonumber',
 
  76     part_classification_query => [ "used_for_purchase" => 1 ],
 
  77     right => "purchase_delivery_order_edit",
 
  79   SUPPLIER_DELIVERY_ORDER_TYPE() => {
 
  81       delete => t8('Delivery Order has been deleted'),
 
  82       saved  => t8('Delivery Order has been saved'),
 
  83       add    => t8("Add Supplier Delivery Order"),
 
  84       edit   => t8("Edit Supplier Delivery Order"),
 
  85       attachment => t8("supplier_delivery_order_list"),
 
  88       save_and_quotation      => 0,
 
  90       save_and_sales_order    => 0,
 
  91       save_and_purchase_order => 0,
 
  92       save_and_delivery_order => 0,
 
  93       save_and_ap_transaction => 0,
 
  94       save_and_invoice        => 0,
 
  95       delete                  => sub { $::instance_conf->get_sales_delivery_order_show_delete },
 
  98       customervendor => "vendor",
 
 100       nr_key         => "donumber",
 
 102       transnumber    => 'sudonumber',
 
 104     part_classification_query => [ "used_for_purchase" => 1 ],
 
 105     right => "purchase_delivery_order_edit",
 
 107   RMA_DELIVERY_ORDER_TYPE() => {
 
 109       delete => t8('Delivery Order has been deleted'),
 
 110       saved  => t8('Delivery Order has been saved'),
 
 111       add    => t8("Add RMA Delivery Order"),
 
 112       edit   => t8("Edit RMA Delivery Order"),
 
 113       attachment => t8("rma_delivery_order_list"),
 
 116       save_and_quotation      => 0,
 
 118       save_and_sales_order    => 0,
 
 119       save_and_purchase_order => 0,
 
 120       save_and_delivery_order => 0,
 
 121       save_and_ap_transaction => 0,
 
 122       save_and_invoice        => 0,
 
 123       delete                  => sub { $::instance_conf->get_sales_delivery_order_show_delete },
 
 126       customervendor => "customer",
 
 128       nr_key         => "donumber",
 
 130       transnumber    => 'rdonumber',
 
 132     part_classification_query => [ "used_for_sale" => 1 ],
 
 133     right => "sales_delivery_order_edit",
 
 138   SALES_DELIVERY_ORDER_TYPE,
 
 139   PURCHASE_DELIVERY_ORDER_TYPE,
 
 140   SUPPLIER_DELIVERY_ORDER_TYPE,
 
 141   RMA_DELIVERY_ORDER_TYPE,
 
 144 my %valid_types = map { $_ => $_ } @valid_types;
 
 151   !!exists $type_data{$_[0]};
 
 157   return $valid_types{$type} // croak "invalid type '$type'";
 
 161   my ($type, $key) = @_;
 
 163   croak "invalid type '$type'" unless exists $type_data{$type};
 
 165   my $ret = $type_data{$type}->{$key} // die "unknown property '$key'";
 
 173   my ($type, $topic, $key) = @_;
 
 175   croak "invalid type '$type'" unless exists $type_data{$type};
 
 177   my $ret = $type_data{$type}{$topic}{$key} // croak "unknown property '$key' in topic '$topic' for type '$type'";