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 },
43 customervendor => "customer",
47 transnumber => 'sdonumber',
49 part_classification_query => [ "used_for_sale" => 1 ],
51 edit => "sales_delivery_order_edit",
52 view => "sales_delivery_order_edit | sales_delivery_order_view",
55 PURCHASE_DELIVERY_ORDER_TYPE() => {
57 delete => t8('Delivery Order has been deleted'),
58 saved => t8('Delivery Order has been saved'),
59 add => t8("Add Purchase Delivery Order"),
60 edit => t8("Edit Purchase Delivery Order"),
61 attachment => t8("purchase_delivery_order_list"),
64 save_and_quotation => 0,
66 save_and_sales_order => 0,
67 save_and_purchase_order => 0,
68 save_and_delivery_order => 0,
69 save_and_ap_transaction => 0,
70 save_and_invoice => 0,
71 delete => sub { $::instance_conf->get_sales_delivery_order_show_delete },
75 customervendor => "vendor",
79 transnumber => 'pdonumber',
81 part_classification_query => [ "used_for_purchase" => 1 ],
83 edit => "purchase_delivery_order_edit",
84 view => "purchase_delivery_order_edit | purchase_delivery_order_view",
87 SUPPLIER_DELIVERY_ORDER_TYPE() => {
89 delete => t8('Supplier Delivery Order has been deleted'),
90 saved => t8('Supplier Delivery Order has been saved'),
91 add => t8("Add Supplier Delivery Order"),
92 edit => t8("Edit Supplier Delivery Order"),
93 attachment => t8("supplier_delivery_order_list"),
96 save_and_quotation => 0,
98 save_and_sales_order => 0,
99 save_and_purchase_order => 0,
100 save_and_delivery_order => 0,
101 save_and_ap_transaction => 0,
102 save_and_invoice => 0,
103 delete => sub { $::instance_conf->get_sales_delivery_order_show_delete },
107 customervendor => "vendor",
109 nr_key => "donumber",
111 transnumber => 'sudonumber',
113 part_classification_query => [ "used_for_purchase" => 1 ],
115 edit => "purchase_delivery_order_edit",
116 view => "purchase_delivery_order_edit | purchase_delivery_order_view",
119 RMA_DELIVERY_ORDER_TYPE() => {
121 delete => t8('Delivery Order has been deleted'),
122 saved => t8('Delivery Order has been saved'),
123 add => t8("Add RMA Delivery Order"),
124 edit => t8("Edit RMA Delivery Order"),
125 attachment => t8("rma_delivery_order_list"),
128 save_and_quotation => 0,
130 save_and_sales_order => 0,
131 save_and_purchase_order => 0,
132 save_and_delivery_order => 0,
133 save_and_ap_transaction => 0,
134 save_and_invoice => 0,
135 delete => sub { $::instance_conf->get_sales_delivery_order_show_delete },
139 customervendor => "customer",
141 nr_key => "donumber",
143 transnumber => 'rdonumber',
145 part_classification_query => [ "used_for_sale" => 1 ],
147 edit => "sales_delivery_order_edit",
148 view => "sales_delivery_order_edit | sales_delivery_order_view",
154 SALES_DELIVERY_ORDER_TYPE,
155 PURCHASE_DELIVERY_ORDER_TYPE,
156 SUPPLIER_DELIVERY_ORDER_TYPE,
157 RMA_DELIVERY_ORDER_TYPE,
160 my %valid_types = map { $_ => $_ } @valid_types;
167 !!exists $type_data{$_[0]};
173 return $valid_types{$type} // croak "invalid type '$type'";
177 my ($type, $key) = @_;
179 croak "invalid type '$type'" unless exists $type_data{$type};
181 my $ret = $type_data{$type}->{$key} // die "unknown property '$key'";
189 my ($type, $topic, $key) = @_;
191 croak "invalid type '$type'" unless exists $type_data{$type};
193 my $ret = $type_data{$type}{$topic}{$key} // croak "unknown property '$key' in topic '$topic' for type '$type'";