1 package SL::DB::DeliveryOrder::TypeData;
4 use Exporter qw(import);
5 use Scalar::Util qw(weaken);
6 use SL::Locale::String qw(t8);
9 SALES_DELIVERY_ORDER_TYPE => 'sales_delivery_order',
10 PURCHASE_DELIVERY_ORDER_TYPE => 'purchase_delivery_order',
11 SUPPLIER_DELIVERY_ORDER_TYPE => 'supplier_delivery_order',
12 RMA_DELIVERY_ORDER_TYPE => 'rma_delivery_order',
15 my @export_types = qw(SALES_DELIVERY_ORDER_TYPE PURCHASE_DELIVERY_ORDER_TYPE SUPPLIER_DELIVERY_ORDER_TYPE RMA_DELIVERY_ORDER_TYPE);
16 my @export_subs = qw(valid_types validate_type is_valid_type get get3);
18 our @EXPORT_OK = (@export_types, @export_subs);
19 our %EXPORT_TAGS = (types => \@export_types, subs => \@export_subs);
22 SALES_DELIVERY_ORDER_TYPE() => {
24 delete => t8('Delivery Order has been deleted'),
25 saved => t8('Delivery Order has been saved'),
26 add => t8("Add Sales Delivery Order"),
27 edit => t8("Edit Sales Delivery Order"),
30 save_and_quotation => 0,
32 save_and_sales_order => 0,
33 save_and_purchase_order => 0,
34 save_and_delivery_order => 0,
35 save_and_ap_transaction => 0,
36 save_and_invoice => 0,
37 delete => sub { $::instance_conf->get_sales_delivery_order_show_delete },
40 customervendor => "customer",
45 part_classification_query => [ "used_for_sale" => 1 ],
46 right => "sales_delivery_order_edit",
48 PURCHASE_DELIVERY_ORDER_TYPE() => {
50 delete => t8('Delivery Order has been deleted'),
51 saved => t8('Delivery Order has been saved'),
52 add => t8("Add Purchase Delivery Order"),
53 edit => t8("Edit Purchase Delivery Order"),
56 save_and_quotation => 0,
58 save_and_sales_order => 0,
59 save_and_purchase_order => 0,
60 save_and_delivery_order => 0,
61 save_and_ap_transaction => 0,
62 save_and_invoice => 0,
63 delete => sub { $::instance_conf->get_sales_delivery_order_show_delete },
66 customervendor => "vendor",
71 part_classification_query => [ "used_for_purchase" => 1 ],
72 right => "purchase_delivery_order_edit",
74 SUPPLIER_DELIVERY_ORDER_TYPE() => {
76 delete => t8('Delivery Order has been deleted'),
77 saved => t8('Delivery Order has been saved'),
78 add => t8("Add Supplier Delivery Order"),
79 edit => t8("Edit Supplier Delivery Order"),
82 save_and_quotation => 0,
84 save_and_sales_order => 0,
85 save_and_purchase_order => 0,
86 save_and_delivery_order => 0,
87 save_and_ap_transaction => 0,
88 save_and_invoice => 0,
89 delete => sub { $::instance_conf->get_sales_delivery_order_show_delete },
92 customervendor => "vendor",
97 part_classification_query => [ "used_for_purchase" => 1 ],
98 right => "purchase_delivery_order_edit",
100 RMA_DELIVERY_ORDER_TYPE() => {
102 delete => t8('Delivery Order has been deleted'),
103 saved => t8('Delivery Order has been saved'),
104 add => t8("Add RMA Delivery Order"),
105 edit => t8("Edit RMA Delivery Order"),
108 save_and_quotation => 0,
110 save_and_sales_order => 0,
111 save_and_purchase_order => 0,
112 save_and_delivery_order => 0,
113 save_and_ap_transaction => 0,
114 save_and_invoice => 0,
115 delete => sub { $::instance_conf->get_sales_delivery_order_show_delete },
118 customervendor => "customer",
120 nr_key => "donumber",
123 part_classification_query => [ "used_for_sale" => 1 ],
124 right => "sales_delivery_order_edit",
129 SALES_DELIVERY_ORDER_TYPE,
130 PURCHASE_DELIVERY_ORDER_TYPE,
131 SUPPLIER_DELIVERY_ORDER_TYPE,
132 RMA_DELIVERY_ORDER_TYPE,
135 my %valid_types = map { $_ => $_ } @valid_types;
142 !!exists $type_data{$_[0]};
146 my ($self, $type) = @_;
148 return $valid_types{$type} // die "invalid type";
152 my ($type, $key) = @_;
154 my $ret = $type_data{$type}->{$key} // die "unknown property '$key'";
162 my ($type, $topic, $key) = @_;
164 my $ret = $type_data{$type}{$topic}{$key} // die "unknown property '$key' in topic '$topic'";