Revision 9bace48d
Von Werner Hahn vor 3 Monaten hinzugefügt
- ID 9bace48d098168de022afeb3a5c7767cc712418a
- Vorgänger 6a559670
SL/Controller/POS.pm | ||
---|---|---|
30 | 30 |
my ($self) = @_; |
31 | 31 |
$self->render( |
32 | 32 |
'pos/form', |
33 |
title => t8('POS'), |
|
33 |
title => t8('POSO'), |
|
34 |
{header => 0, |
|
35 |
output => 0, |
|
36 |
layout => 0}, |
|
34 | 37 |
); |
35 | 38 |
} |
36 | 39 |
|
css/design40/less/custom.less | ||
---|---|---|
25 | 25 |
// ********************************** |
26 | 26 |
.pos_content{ |
27 | 27 |
display: grid; |
28 |
grid-column: repeat(12, 1fr);
|
|
29 |
grid-template-rows: repeat(12,fr);
|
|
30 |
grid-gap: 20px;
|
|
28 |
grid-template-columns: repeat(16, 1fr);
|
|
29 |
grid-template-rows: auto;
|
|
30 |
grid-gap: 2px; |
|
31 | 31 |
} |
32 | 32 |
|
33 |
.container_pos_right{ |
|
34 |
display: grid; |
|
35 |
grid-column: 3 / 6; |
|
36 |
grid-row: 1 /5; |
|
37 |
grid-template-columns: repeat(9, 1fr); |
|
38 |
grid-template-rows: repeat(6, fr); |
|
39 |
grid-gap: 10px; |
|
40 |
height: calc(50vh - 10px); |
|
41 |
justify-self: center; |
|
42 |
align-self: center; |
|
33 |
//.container_pos_right{ |
|
34 |
// display: grid; |
|
35 |
// grid-column: 7/12; |
|
36 |
// grid-template-columns: repeat(2, 1fr); |
|
37 |
// grid-template-rows: repeat(6, 1fr); |
|
38 |
// grid-gap: 1px; |
|
39 |
// height: calc(50vh - 10px); |
|
40 |
//justify-self: center; |
|
41 |
//align-self: center; |
|
42 |
//padding-left:1em; |
|
43 |
//} |
|
44 |
|
|
45 |
.input_cv{ |
|
46 |
grid-column:2/4; |
|
47 |
grid-row: 2/3; |
|
43 | 48 |
} |
44 | 49 |
|
45 |
.container_pos_left{ |
|
46 |
display: grid; |
|
47 |
grid-column: 1 / 9; |
|
48 |
grid-row: 1 /1; |
|
49 |
grid-template-columns: repeat(3, 1fr); |
|
50 |
grid-template-rows: repeat(6, fr); |
|
51 |
grid-gap: 10px; |
|
52 |
height: calc(50vh - 10px); |
|
53 |
justify-self: center; |
|
54 |
align-self: center; |
|
55 |
} |
|
56 |
|
|
57 |
.pos_button{ |
|
58 |
//border: green 1px solid; |
|
59 |
//font-size: calc(4vw + 4vh + 2vmin); |
|
60 |
font-size: 1vi; |
|
61 |
font-weight: bold; |
|
50 |
.salesman{ |
|
51 |
grid-column:4/6; |
|
52 |
grid-row: 2/3; |
|
53 |
} |
|
54 |
|
|
55 |
|
|
56 |
.order{ |
|
57 |
grid-column:2/4; |
|
58 |
grid-row: 3/4; |
|
59 |
} |
|
60 |
|
|
61 |
.item_input{ |
|
62 |
grid-column:2/8; |
|
63 |
grid-row: 4/5; |
|
64 |
} |
|
65 |
|
|
66 |
.show_rows{ |
|
67 |
grid-column:1/8; |
|
68 |
grid-row: 5/12; |
|
69 |
} |
|
70 |
//.container_pos_left{ |
|
71 |
// display: grid; |
|
72 |
// grid-column: 1 / 6; |
|
73 |
// grid-row: 1 /6; |
|
74 |
// grid-template-columns: repeat(3, 1fr); |
|
75 |
// grid-template-rows: repeat(12, 1fr); |
|
76 |
// grid-gap: 1px; |
|
77 |
// height: calc(50vh - 10px); |
|
78 |
//justify-self: center; |
|
79 |
//align-self: center; |
|
80 |
//padding: 3em; |
|
81 |
//} |
|
82 |
|
|
83 |
.pos_button1{ |
|
84 |
grid-column: 9/11; |
|
85 |
grid-row: 2/3; |
|
86 |
font-size: 1vi; |
|
87 |
font-weight: bold; |
|
88 |
display: flex; |
|
89 |
justify-content: center; |
|
90 |
align-items: center; |
|
91 |
cursor:pointer; |
|
92 |
} |
|
93 |
|
|
94 |
.pos_button2{ |
|
95 |
grid-column: 11/13; |
|
96 |
grid-row: 2/3; |
|
97 |
font-size: 1vi; |
|
98 |
font-weight: bold; |
|
99 |
display: flex; |
|
100 |
justify-content: center; |
|
101 |
align-items: center; |
|
102 |
cursor:pointer; |
|
103 |
} |
|
104 |
|
|
105 |
.pos_button3{ |
|
106 |
grid-column: 9/11; |
|
107 |
grid-row: 3/4; |
|
108 |
font-size: 1vi; |
|
109 |
font-weight: bold; |
|
110 |
display: flex; |
|
111 |
justify-content: center; |
|
112 |
align-items: center; |
|
113 |
cursor:pointer; |
|
114 |
} |
|
115 |
|
|
116 |
.pos_button4{ |
|
117 |
grid-column: 11/13; |
|
118 |
grid-row: 3/4; |
|
119 |
font-size: 1vi; |
|
120 |
font-weight: bold; |
|
121 |
display: flex; |
|
122 |
justify-content: center; |
|
123 |
align-items: center; |
|
124 |
cursor:pointer; |
|
125 |
} |
|
126 |
|
|
127 |
.pos_button5{ |
|
128 |
grid-column: 9/11; |
|
129 |
grid-row: 4/5; |
|
130 |
font-size: 1vi; |
|
131 |
font-weight: bold; |
|
132 |
display: flex; |
|
133 |
justify-content: center; |
|
134 |
align-items: center; |
|
135 |
cursor:pointer; |
|
136 |
} |
|
137 |
|
|
138 |
.pos_button6{ |
|
139 |
grid-column: 11/13; |
|
140 |
grid-row: 4/5; |
|
141 |
font-size: 1vi; |
|
142 |
font-weight: bold; |
|
143 |
display: flex; |
|
144 |
justify-content: center; |
|
145 |
align-items: center; |
|
146 |
cursor:pointer; |
|
147 |
} |
|
148 |
|
|
149 |
.pos_button7{ |
|
150 |
grid-column: 9/11; |
|
151 |
grid-row: 5/6; |
|
152 |
font-size: 1vi; |
|
153 |
font-weight: bold; |
|
154 |
display: flex; |
|
155 |
justify-content: center; |
|
156 |
align-items: center; |
|
157 |
cursor:pointer; |
|
158 |
} |
|
159 |
|
|
160 |
.pos_button8{ |
|
161 |
grid-column: 11/13; |
|
162 |
grid-row: 5/6; |
|
163 |
font-size: 1vi; |
|
164 |
font-weight: bold; |
|
165 |
display: flex; |
|
166 |
justify-content: center; |
|
167 |
align-items: center; |
|
168 |
cursor:pointer; |
|
169 |
} |
|
170 |
|
|
171 |
.pos_button9{ |
|
172 |
grid-column: 9/11; |
|
173 |
grid-row: 6/7; |
|
174 |
font-size: 1vi; |
|
175 |
font-weight: bold; |
|
176 |
display: flex; |
|
177 |
justify-content: center; |
|
178 |
align-items: center; |
|
179 |
cursor:pointer; |
|
180 |
} |
|
181 |
|
|
182 |
.pos_button10{ |
|
183 |
grid-column: 11/13; |
|
184 |
grid-row: 6/7; |
|
185 |
font-size: 1vi; |
|
186 |
font-weight: bold; |
|
62 | 187 |
display: flex; |
63 | 188 |
justify-content: center; |
64 | 189 |
align-items: center; |
190 |
cursor:pointer; |
|
65 | 191 |
} |
66 | 192 |
|
67 |
.pos_button:hover{ |
|
193 |
.pos_button11{ |
|
194 |
grid-column: 11/13; |
|
195 |
grid-row: 8/9; |
|
196 |
font-size: 1vi; |
|
197 |
font-weight: bold; |
|
198 |
display: flex; |
|
199 |
justify-content: center; |
|
200 |
align-items: center; |
|
68 | 201 |
cursor:pointer; |
202 |
} |
|
69 | 203 |
|
204 |
.pos_button12{ |
|
205 |
grid-column: 11/13; |
|
206 |
grid-row: 8/9; |
|
207 |
font-size: 1vi; |
|
208 |
font-weight: bold; |
|
209 |
display: flex; |
|
210 |
justify-content: center; |
|
211 |
align-items: center; |
|
212 |
cursor:pointer; |
|
70 | 213 |
} |
71 | 214 |
|
215 |
//.pos_button:hover{ |
|
216 |
// cursor:pointer; |
|
217 |
// |
|
218 |
//} |
|
219 |
|
|
72 | 220 |
//.my-class-padding: 0.2em ; // just an example |
73 | 221 |
|
74 | 222 |
// |
css/design40/style.css | ||
---|---|---|
7951 | 7951 |
/* ------------------------------------------------------------- */ |
7952 | 7952 |
.pos_content { |
7953 | 7953 |
display: grid; |
7954 |
grid-column: repeat(12, 1fr);
|
|
7955 |
grid-template-rows: repeat(12, fr);
|
|
7956 |
grid-gap: 20px;
|
|
7954 |
grid-template-columns: repeat(16, 1fr);
|
|
7955 |
grid-template-rows: auto;
|
|
7956 |
grid-gap: 2px; |
|
7957 | 7957 |
} |
7958 |
.container_pos_right { |
|
7959 |
display: grid; |
|
7960 |
grid-column: 3 / 6; |
|
7961 |
grid-row: 1 / 5; |
|
7962 |
grid-template-columns: repeat(9, 1fr); |
|
7963 |
grid-template-rows: repeat(6, fr); |
|
7964 |
grid-gap: 10px; |
|
7965 |
height: calc(50vh - 10px); |
|
7966 |
justify-self: center; |
|
7967 |
align-self: center; |
|
7968 |
} |
|
7969 |
.container_pos_left { |
|
7970 |
display: grid; |
|
7971 |
grid-column: 1 / 9; |
|
7972 |
grid-row: 1 / 1; |
|
7973 |
grid-template-columns: repeat(3, 1fr); |
|
7974 |
grid-template-rows: repeat(6, fr); |
|
7975 |
grid-gap: 10px; |
|
7976 |
height: calc(50vh - 10px); |
|
7977 |
justify-self: center; |
|
7978 |
align-self: center; |
|
7979 |
} |
|
7980 |
.pos_button { |
|
7958 |
.input_cv { |
|
7959 |
grid-column: 2/4; |
|
7960 |
grid-row: 2/3; |
|
7961 |
} |
|
7962 |
.salesman { |
|
7963 |
grid-column: 4/6; |
|
7964 |
grid-row: 2/3; |
|
7965 |
} |
|
7966 |
.order { |
|
7967 |
grid-column: 2/4; |
|
7968 |
grid-row: 3/4; |
|
7969 |
} |
|
7970 |
.item_input { |
|
7971 |
grid-column: 2/8; |
|
7972 |
grid-row: 4/5; |
|
7973 |
} |
|
7974 |
.show_rows { |
|
7975 |
grid-column: 1/8; |
|
7976 |
grid-row: 5/12; |
|
7977 |
} |
|
7978 |
.pos_button1 { |
|
7979 |
grid-column: 9/11; |
|
7980 |
grid-row: 2/3; |
|
7981 |
font-size: 1vi; |
|
7982 |
font-weight: bold; |
|
7983 |
display: flex; |
|
7984 |
justify-content: center; |
|
7985 |
align-items: center; |
|
7986 |
cursor: pointer; |
|
7987 |
} |
|
7988 |
.pos_button2 { |
|
7989 |
grid-column: 11/13; |
|
7990 |
grid-row: 2/3; |
|
7991 |
font-size: 1vi; |
|
7992 |
font-weight: bold; |
|
7993 |
display: flex; |
|
7994 |
justify-content: center; |
|
7995 |
align-items: center; |
|
7996 |
cursor: pointer; |
|
7997 |
} |
|
7998 |
.pos_button3 { |
|
7999 |
grid-column: 9/11; |
|
8000 |
grid-row: 3/4; |
|
7981 | 8001 |
font-size: 1vi; |
7982 | 8002 |
font-weight: bold; |
7983 | 8003 |
display: flex; |
7984 | 8004 |
justify-content: center; |
7985 | 8005 |
align-items: center; |
8006 |
cursor: pointer; |
|
7986 | 8007 |
} |
7987 |
.pos_button:hover { |
|
8008 |
.pos_button4 { |
|
8009 |
grid-column: 11/13; |
|
8010 |
grid-row: 3/4; |
|
8011 |
font-size: 1vi; |
|
8012 |
font-weight: bold; |
|
8013 |
display: flex; |
|
8014 |
justify-content: center; |
|
8015 |
align-items: center; |
|
8016 |
cursor: pointer; |
|
8017 |
} |
|
8018 |
.pos_button5 { |
|
8019 |
grid-column: 9/11; |
|
8020 |
grid-row: 4/5; |
|
8021 |
font-size: 1vi; |
|
8022 |
font-weight: bold; |
|
8023 |
display: flex; |
|
8024 |
justify-content: center; |
|
8025 |
align-items: center; |
|
8026 |
cursor: pointer; |
|
8027 |
} |
|
8028 |
.pos_button6 { |
|
8029 |
grid-column: 11/13; |
|
8030 |
grid-row: 4/5; |
|
8031 |
font-size: 1vi; |
|
8032 |
font-weight: bold; |
|
8033 |
display: flex; |
|
8034 |
justify-content: center; |
|
8035 |
align-items: center; |
|
8036 |
cursor: pointer; |
|
8037 |
} |
|
8038 |
.pos_button7 { |
|
8039 |
grid-column: 9/11; |
|
8040 |
grid-row: 5/6; |
|
8041 |
font-size: 1vi; |
|
8042 |
font-weight: bold; |
|
8043 |
display: flex; |
|
8044 |
justify-content: center; |
|
8045 |
align-items: center; |
|
8046 |
cursor: pointer; |
|
8047 |
} |
|
8048 |
.pos_button8 { |
|
8049 |
grid-column: 11/13; |
|
8050 |
grid-row: 5/6; |
|
8051 |
font-size: 1vi; |
|
8052 |
font-weight: bold; |
|
8053 |
display: flex; |
|
8054 |
justify-content: center; |
|
8055 |
align-items: center; |
|
8056 |
cursor: pointer; |
|
8057 |
} |
|
8058 |
.pos_button9 { |
|
8059 |
grid-column: 9/11; |
|
8060 |
grid-row: 6/7; |
|
8061 |
font-size: 1vi; |
|
8062 |
font-weight: bold; |
|
8063 |
display: flex; |
|
8064 |
justify-content: center; |
|
8065 |
align-items: center; |
|
8066 |
cursor: pointer; |
|
8067 |
} |
|
8068 |
.pos_button10 { |
|
8069 |
grid-column: 11/13; |
|
8070 |
grid-row: 6/7; |
|
8071 |
font-size: 1vi; |
|
8072 |
font-weight: bold; |
|
8073 |
display: flex; |
|
8074 |
justify-content: center; |
|
8075 |
align-items: center; |
|
8076 |
cursor: pointer; |
|
8077 |
} |
|
8078 |
.pos_button11 { |
|
8079 |
grid-column: 11/13; |
|
8080 |
grid-row: 8/9; |
|
8081 |
font-size: 1vi; |
|
8082 |
font-weight: bold; |
|
8083 |
display: flex; |
|
8084 |
justify-content: center; |
|
8085 |
align-items: center; |
|
8086 |
cursor: pointer; |
|
8087 |
} |
|
8088 |
.pos_button12 { |
|
8089 |
grid-column: 11/13; |
|
8090 |
grid-row: 8/9; |
|
8091 |
font-size: 1vi; |
|
8092 |
font-weight: bold; |
|
8093 |
display: flex; |
|
8094 |
justify-content: center; |
|
8095 |
align-items: center; |
|
7988 | 8096 |
cursor: pointer; |
7989 | 8097 |
} |
7990 | 8098 |
/* ------------------------------------------------------------- */ |
templates/design40_webpages/pos/form.html | ||
---|---|---|
8 | 8 |
|
9 | 9 |
|
10 | 10 |
<div id="pos_content" class="pos_content"> |
11 |
<div class="container_pos_left"> |
|
12 |
<div> |
|
13 |
<table> |
|
14 |
<tr> |
|
15 |
<th>[% 'Customer' | $T8 %]</th> |
|
16 |
<td> [% P.customer_vendor.picker("customer_id",'',type="customer", show_details="1", label=LxERP.t8('Customer')) %]</td> |
|
17 |
<td>[% L.button_tag("input_delete", LxERP.t8('Input delete') ) %]</td> |
|
18 |
</tr> |
|
19 |
</table> |
|
20 |
</div> |
|
21 |
|
|
22 |
<div class="toggle_panel control-panel toggle_order_info %]"> |
|
23 |
<a href="#" onClick='javascript:$(".toggle_panel_block").toggle()' class="button toggle off neutral">Auftragsdaten</a> |
|
24 |
</div> |
|
25 |
<div class="toggle_panel_block" style="display:none;"> |
|
26 |
<div id="tables_left" style="float:left;"> |
|
27 |
<table style="width:40%"> |
|
28 |
<caption>[% 'Customer & Order Information' | $T8 %]</caption> |
|
29 |
<colgroup><col class="wi-mediumsmall"><col class="wi-lightwide"></colgroup> |
|
30 |
<tbody> |
|
31 |
<tr id='cp_row' [% IF !SELF.order.${SELF.cv}.contacts.size %]style='display:none'[% END %]> |
|
32 |
<th>[% 'Contact Person' | $T8 %]</th> |
|
33 |
<td>[% L.select_tag('order.cp_id', |
|
34 |
SELF.order.${SELF.cv}.contacts, |
|
35 |
default=SELF.order.cp_id, |
|
36 |
title_key='full_name_dep', |
|
37 |
value_key='cp_id', |
|
38 |
with_empty=1, |
|
39 |
class='wi-lightwide') %]</td> |
|
40 |
</tr> |
|
41 |
<tr> |
|
42 |
<th>[% 'Shipping Address' | $T8 %]</th> |
|
43 |
<td> |
|
44 |
<span id='shipto_selection' [% IF !SELF.order.${SELF.cv}.shipto.size %]style='display:none'[% END %]> |
|
45 |
[% shiptos = [ { shipto_id => "", displayable_id => LxERP.t8("No/individual shipping address") } ] ; |
|
46 |
FOREACH s = SELF.order.${SELF.cv}.shipto ; |
|
47 |
shiptos.push(s) ; |
|
48 |
END ; |
|
49 |
L.select_tag('order.shipto_id', |
|
50 |
shiptos, |
|
51 |
default=SELF.order.shipto_id, |
|
11 |
<div class="salesman ">[% "Salesman" | $T8 %]<br> |
|
12 |
[% L.select_tag('order.salesman_id', |
|
13 |
SELF.all_salesmen, |
|
14 |
#[{id=1,name=werner},{id=2,name=Max}], |
|
15 |
default=(SELF.order.salesman_id ? SELF.order.salesman_id : SELF.current_employee_id), |
|
16 |
class='wi-normal', |
|
17 |
title_key='safe_name') %] |
|
18 |
</div> |
|
19 |
<div class="input_cv"> |
|
20 |
<div>[% 'Customer' | $T8 %]</div> |
|
21 |
<div> [% P.customer_vendor.picker("customer_id",'',type="customer", show_details="1", label=LxERP.t8('Customer')) %]</div> |
|
22 |
<div>[% L.button_tag("input_delete", LxERP.t8('Input delete') ) %]</div> |
|
23 |
</div> |
|
24 |
<div class="order"> |
|
25 |
<div class="toggle_panel control-panel toggle_order_info order_data %]"> |
|
26 |
<a href="#" onClick='javascript:$(".toggle_panel_block").toggle()' class="button toggle off neutral">Auftragsdaten</a> |
|
27 |
</div> |
|
28 |
<div class="toggle_panel_block order_data_block" style="display:none;"> |
|
29 |
<table style="width:40%"> |
|
30 |
<caption>[% 'Customer & Order Information' | $T8 %]</caption> |
|
31 |
<colgroup><col class="wi-mediumsmall"><col class="wi-lightwide"></colgroup> |
|
32 |
<tbody> |
|
33 |
<tr id='cp_row' [% IF !SELF.order.${SELF.cv}.contacts.size %]style='display:none'[% END %]> |
|
34 |
<th>[% 'Contact Person' | $T8 %]</th> |
|
35 |
<td>[% L.select_tag('order.cp_id', |
|
36 |
SELF.order.${SELF.cv}.contacts, |
|
37 |
default=SELF.order.cp_id, |
|
38 |
title_key='full_name_dep', |
|
39 |
value_key='cp_id', |
|
40 |
with_empty=1, |
|
41 |
class='wi-lightwide') %]</td> |
|
42 |
</tr> |
|
43 |
<tr> |
|
44 |
<th>[% 'Shipping Address' | $T8 %]</th> |
|
45 |
<td> |
|
46 |
<span id='shipto_selection' [% IF !SELF.order.${SELF.cv}.shipto.size %]style='display:none'[% END %]> |
|
47 |
[% shiptos = [ { shipto_id => "", displayable_id => LxERP.t8("No/individual shipping address") } ] ; |
|
48 |
FOREACH s = SELF.order.${SELF.cv}.shipto ; |
|
49 |
shiptos.push(s) ; |
|
50 |
END ; |
|
51 |
L.select_tag('order.shipto_id', |
|
52 |
shiptos, |
|
53 |
default=SELF.order.shipto_id, |
|
54 |
title_key='displayable_id', |
|
55 |
value_key='shipto_id', |
|
56 |
with_empty=0, |
|
57 |
class='wi-lightwide') %] |
|
58 |
</span> |
|
59 |
[% L.button_tag("kivi.Order.edit_custom_shipto()", |
|
60 |
LxERP.t8("Custom shipto"), |
|
61 |
class='button neutral below wi-lightwide') %] |
|
62 |
</td> |
|
63 |
</tr> |
|
64 |
<tr id="billing_address_row"[% IF !SELF.order.customer.additional_billing_addresses.as_list.size %]style="display:none"[% END %]> |
|
65 |
<th>[% 'Custom Billing Address' | $T8 %]</th> |
|
66 |
<td> |
|
67 |
[% L.select_tag('order.billing_address_id', |
|
68 |
SELF.order.customer.additional_billing_addresses, |
|
69 |
default=SELF.order.billing_address_id, |
|
52 | 70 |
title_key='displayable_id', |
53 |
value_key='shipto_id',
|
|
54 |
with_empty=0,
|
|
71 |
value_key='id', |
|
72 |
with_empty=1,
|
|
55 | 73 |
class='wi-lightwide') %] |
56 |
</span> |
|
57 |
[% L.button_tag("kivi.Order.edit_custom_shipto()", |
|
58 |
LxERP.t8("Custom shipto"), |
|
59 |
class='button neutral below wi-lightwide') %] |
|
60 |
</td> |
|
61 |
</tr> |
|
62 |
<tr id="billing_address_row"[% IF !SELF.order.customer.additional_billing_addresses.as_list.size %]style="display:none"[% END %]> |
|
63 |
<th>[% 'Custom Billing Address' | $T8 %]</th> |
|
64 |
<td> |
|
65 |
[% L.select_tag('order.billing_address_id', |
|
66 |
SELF.order.customer.additional_billing_addresses, |
|
67 |
default=SELF.order.billing_address_id, |
|
68 |
title_key='displayable_id', |
|
69 |
value_key='id', |
|
70 |
with_empty=1, |
|
71 |
class='wi-lightwide') %] |
|
72 |
</td> |
|
73 |
</tr> |
|
74 |
[% PROCESS order/tabs/_business_info_row.html SELF=SELF %] |
|
75 |
<tr> |
|
76 |
<th>[% 'Steuersatz' | $T8 %]</th> |
|
77 |
<td>[% L.select_tag('order.taxzone_id', SELF.all_taxzones, default=SELF.order.taxzone_id, title_key='description', class='recalc wi-lightwide') %]</td> |
|
78 |
</tr> |
|
79 |
<!-- CURRENCY und EXCAHANGERATE rausgenommen --> |
|
80 |
[% IF SELF.all_languages.size %] |
|
74 |
</td> |
|
75 |
</tr> |
|
76 |
[% PROCESS order/tabs/_business_info_row.html SELF=SELF %] |
|
81 | 77 |
<tr> |
82 |
<th>[% 'Language' | $T8 %]</th> |
|
83 |
<td> |
|
84 |
[% L.select_tag('order.language_id', SELF.all_languages, default=SELF.order.language_id, title_key='description', with_empty=1, class='wi-lightwide') %] |
|
78 |
<th>[% 'Steuersatz' | $T8 %]</th> |
|
79 |
<td>[% L.select_tag('order.taxzone_id', SELF.all_taxzones, default=SELF.order.taxzone_id, title_key='description', class='recalc wi-lightwide') %]</td> |
|
80 |
</tr> |
|
81 |
<!-- CURRENCY und EXCAHANGERATE rausgenommen --> |
|
82 |
[% IF SELF.all_languages.size %] |
|
83 |
<tr> |
|
84 |
<th>[% 'Language' | $T8 %]</th> |
|
85 |
<td> |
|
86 |
[% L.select_tag('order.language_id', SELF.all_languages, default=SELF.order.language_id, title_key='description', with_empty=1, class='wi-lightwide') %] |
|
87 |
</td> |
|
88 |
</tr> |
|
89 |
[% END %] |
|
90 |
[% IF SELF.all_departments.size %] |
|
91 |
<tr> |
|
92 |
<th>[% 'Department' | $T8 %]</th> |
|
93 |
<td> |
|
94 |
[% L.select_tag('order.department_id', SELF.all_departments, default=SELF.order.department_id, title_key='description', with_empty=1, class='wi-lightwide') %] |
|
95 |
</td> |
|
96 |
</tr> |
|
97 |
[% END %] |
|
98 |
<tr> |
|
99 |
<th>[% 'Shipping Point' | $T8 %]</th> |
|
100 |
<td>[% L.input_tag('order.shippingpoint', SELF.order.shippingpoint, class='wi-lightwide') %]</td> |
|
101 |
</tr> |
|
102 |
<tr> |
|
103 |
<th>[% 'Ship via' | $T8 %]</th> |
|
104 |
<td>[% L.input_tag('order.shipvia', SELF.order.shipvia, class='wi-lightwide') %]</td> |
|
105 |
</tr> |
|
106 |
<tr> |
|
107 |
<th>[% 'Transaction description' | $T8 %]</th> |
|
108 |
<td>[% L.input_tag('order.transaction_description', SELF.order.transaction_description, 'data-validate'=INSTANCE_CONF.get_require_transaction_description_ps ? 'required' : '', class='wi-lightwide') %]</td> |
|
109 |
</tr> |
|
110 |
<tr> |
|
111 |
<th>[% 'Project Number' | $T8 %]</th> |
|
112 |
<td>[% P.project.picker('order.globalproject_id', SELF.order.globalproject_id, class='wi-lightwide') %]</td> |
|
113 |
</tr> |
|
114 |
</tbody> |
|
115 |
</table> |
|
116 |
|
|
117 |
<table class="tbl-horizontal col"> |
|
118 |
<caption>[% 'Terms' | $T8 %]</caption> |
|
119 |
<colgroup><col class="wi-mediumsmall"><col class="wi-lightwide"></colgroup> |
|
120 |
<tbody> |
|
121 |
<tr> |
|
122 |
<td colspan="2"> |
|
123 |
<span class="label above">[% 'Payment Terms' | $T8 %]</span> |
|
124 |
[% L.select_tag('order.payment_id', |
|
125 |
SELF.all_payment_terms, |
|
126 |
default = SELF.order.payment_id, |
|
127 |
with_empty = 1, |
|
128 |
title_key = 'description', |
|
129 |
class = 'wi-mediumsmall-lightwide') %] |
|
85 | 130 |
</td> |
86 | 131 |
</tr> |
87 |
[% END %] |
|
88 |
[% IF SELF.all_departments.size %] |
|
89 | 132 |
<tr> |
90 |
<th>[% 'Department' | $T8 %]</th> |
|
91 |
<td> |
|
92 |
[% L.select_tag('order.department_id', SELF.all_departments, default=SELF.order.department_id, title_key='description', with_empty=1, class='wi-lightwide') %] |
|
133 |
<td colspan="2"> |
|
134 |
<span class="label above">[% 'Delivery Terms' | $T8 %]</span> |
|
135 |
[% L.select_tag('order.delivery_term_id', |
|
136 |
SELF.all_delivery_terms, |
|
137 |
default = SELF.order.delivery_term_id, |
|
138 |
with_empty = 1, |
|
139 |
title_key = 'description', |
|
140 |
class = 'wi-mediumsmall-lightwide') %] |
|
93 | 141 |
</td> |
94 | 142 |
</tr> |
95 |
[% END %] |
|
96 |
<tr> |
|
97 |
<th>[% 'Shipping Point' | $T8 %]</th> |
|
98 |
<td>[% L.input_tag('order.shippingpoint', SELF.order.shippingpoint, class='wi-lightwide') %]</td> |
|
99 |
</tr> |
|
100 |
<tr> |
|
101 |
<th>[% 'Ship via' | $T8 %]</th> |
|
102 |
<td>[% L.input_tag('order.shipvia', SELF.order.shipvia, class='wi-lightwide') %]</td> |
|
103 |
</tr> |
|
104 |
<tr> |
|
105 |
<th>[% 'Transaction description' | $T8 %]</th> |
|
106 |
<td>[% L.input_tag('order.transaction_description', SELF.order.transaction_description, 'data-validate'=INSTANCE_CONF.get_require_transaction_description_ps ? 'required' : '', class='wi-lightwide') %]</td> |
|
107 |
</tr> |
|
108 |
<tr> |
|
109 |
<th>[% 'Project Number' | $T8 %]</th> |
|
110 |
<td>[% P.project.picker('order.globalproject_id', SELF.order.globalproject_id, class='wi-lightwide') %]</td> |
|
111 |
</tr> |
|
112 |
</tbody> |
|
113 |
</table> |
|
114 |
|
|
115 |
<table class="tbl-horizontal col"> |
|
116 |
<caption>[% 'Terms' | $T8 %]</caption> |
|
117 |
<colgroup><col class="wi-mediumsmall"><col class="wi-lightwide"></colgroup> |
|
118 |
<tbody> |
|
119 |
<tr> |
|
120 |
<td colspan="2"> |
|
121 |
<span class="label above">[% 'Payment Terms' | $T8 %]</span> |
|
122 |
[% L.select_tag('order.payment_id', |
|
123 |
SELF.all_payment_terms, |
|
124 |
default = SELF.order.payment_id, |
|
125 |
with_empty = 1, |
|
126 |
title_key = 'description', |
|
127 |
class = 'wi-mediumsmall-lightwide') %] |
|
128 |
</td> |
|
129 |
</tr> |
|
130 |
<tr> |
|
131 |
<td colspan="2"> |
|
132 |
<span class="label above">[% 'Delivery Terms' | $T8 %]</span> |
|
133 |
[% L.select_tag('order.delivery_term_id', |
|
134 |
SELF.all_delivery_terms, |
|
135 |
default = SELF.order.delivery_term_id, |
|
136 |
with_empty = 1, |
|
137 |
title_key = 'description', |
|
138 |
class = 'wi-mediumsmall-lightwide') %] |
|
139 |
</td> |
|
140 |
</tr> |
|
141 |
<tr id="taxincluded_row_id"> |
|
142 |
<th>[% IF !SELF.taxes.size %]<label for="order.taxincluded">[% 'Tax Included' | $T8 %]</label> [% END %]</th> |
|
143 |
<td>[% IF !SELF.taxes.size %][% L.yes_no_tag('order.taxincluded', SELF.order.taxincluded, class='recalc') %][% END %]</td> |
|
144 |
</tr> |
|
145 |
</tbody> |
|
146 |
</table> |
|
147 |
</div> <!-- end table_left --> |
|
148 |
<div id="tables_right" style="float:left;"> |
|
149 |
<table class="tbl-horizontal col"> |
|
150 |
<caption>[% 'Notes' | $T8 %]</caption> |
|
151 |
<colgroup><col class="wi-wide"></colgroup> |
|
152 |
<tbody> |
|
153 |
<tr> |
|
154 |
<td class="wi-wide">[% L.textarea_tag('order.notes', SELF.order.notes, wrap="soft",rows=7, class="texteditor wi-wide") %]</td> |
|
155 |
</tr> |
|
156 |
<tr> |
|
157 |
<td><span class="label above">[% 'Internal Notes' | $T8 %]</span>[% L.textarea_tag('order.intnotes', SELF.order.intnotes, wrap="soft", style="height: 150px", class="wi-wide") %]</td> |
|
158 |
</tr> |
|
159 |
</tbody> |
|
160 |
</table> |
|
161 |
</div> <!-- end table_left --> |
|
162 |
</div><!-- /.filter_toggle --> |
|
163 |
<div> |
|
164 |
[% PROCESS pos/tabs/_item_input.html SELF=SELF %] |
|
165 |
</div> |
|
166 |
<div> |
|
167 |
[% PROCESS pos/tabs/_rows_tmp.html %] |
|
168 |
</div> |
|
169 |
</div> <!-- Ende pos_left --> |
|
170 |
<div class="container_pos_right"> |
|
171 |
<div class="pos_button control-panel" onclick="alert('Funktion')">Funktion*</div> |
|
172 |
<div class="pos_button control-panel">Funktion</div> |
|
173 |
<div class="pos_button control-panel">[% "Salesman" | $T8 %]<br> |
|
174 |
[% L.select_tag('order.salesman_id', |
|
175 |
SELF.all_salesmen, |
|
176 |
#[{id=1,name=werner},{id=2,name=Max}], |
|
177 |
default=(SELF.order.salesman_id ? SELF.order.salesman_id : SELF.current_employee_id), |
|
178 |
class='wi-normal', |
|
179 |
title_key='safe_name') %] |
|
180 |
</div> |
|
181 |
<div class="pos_button control-panel">Auswahl bezahlen/zurücknehmen</div> |
|
182 |
<div class="pos_button control-panel">Nachlass gewähren</div> |
|
183 |
<div class="pos_button control-panel">Nachdruck Quittung</div> |
|
184 |
<div class="pos_button control-panel">Auf Rechnung</div> |
|
185 |
<div class="pos_button control-panel">Entnahme erfassen</div> |
|
186 |
<div class="pos_button control-panel">Auf Lieferschein</div> |
|
187 |
<div class="pos_button control-panel">Quittung parken</div> |
|
188 |
<div class="pos_button control-panel">geparkte Quittung</div> |
|
189 |
<div class="pos_button control-panel">Bezahlen</div> |
|
190 |
<div class="pos_button control-panel">Abbrechen</div> |
|
191 |
</div> <!-- Ende pos_right --> |
|
143 |
<tr id="taxincluded_row_id"> |
|
144 |
<th>[% IF !SELF.taxes.size %]<label for="order.taxincluded">[% 'Tax Included' | $T8 %]</label> [% END %]</th> |
|
145 |
<td>[% IF !SELF.taxes.size %][% L.yes_no_tag('order.taxincluded', SELF.order.taxincluded, class='recalc') %][% END %]</td> |
|
146 |
</tr> |
|
147 |
</tbody> |
|
148 |
</table> |
|
149 |
<table class="tbl-horizontal col"> |
|
150 |
<caption>[% 'Notes' | $T8 %]</caption> |
|
151 |
<colgroup><col class="wi-wide"></colgroup> |
|
152 |
<tbody> |
|
153 |
<tr> |
|
154 |
<td class="wi-wide">[% L.textarea_tag('order.notes', SELF.order.notes, wrap="soft",rows=7, class="texteditor wi-wide") %]</td> |
|
155 |
</tr> |
|
156 |
<tr> |
|
157 |
<td><span class="label above">[% 'Internal Notes' | $T8 %]</span>[% L.textarea_tag('order.intnotes', SELF.order.intnotes, wrap="soft", style="height: 150px", class="wi-wide") %]</td> |
|
158 |
</tr> |
|
159 |
</tbody> |
|
160 |
</table> |
|
161 |
</div> |
|
162 |
</div> |
|
163 |
<div class="item_input"> |
|
164 |
[% PROCESS pos/tabs/_item_input.html SELF=SELF %] |
|
165 |
</div> |
|
166 |
[%- IF SELF.positions_scrollbar_height -%] |
|
167 |
[%- SET scroll_style = 'style="overflow-y: auto; height:' _ SELF.positions_scrollbar_height _ 'vh;"' -%] |
|
168 |
[%- ELSE -%] |
|
169 |
[%- SET scroll_style = '' -%] |
|
170 |
[%- END -%] |
|
171 |
<div id="row_table_scroll_id" class="show_rows" [%- scroll_style -%]> |
|
172 |
|
|
173 |
<table id="row_table_id" class="tbl-list"> |
|
174 |
<caption>[% 'Articles' | $T8 %]</caption> |
|
175 |
<thead> |
|
176 |
<tr> |
|
177 |
<th class="center"> |
|
178 |
[% IF MYCONFIG.show_form_details %] |
|
179 |
[% L.img_tag(src="image/collapse.svg", alt=LxERP.t8('Hide all details'), title=LxERP.t8('Hide all details'), id='expand_all', "data-expanded"="1") %] |
|
180 |
[% ELSE %] |
|
181 |
[% L.img_tag(src="image/expand.svg", alt=LxERP.t8('Show all details'), title=LxERP.t8('Show all details'), id='expand_all') %] |
|
182 |
[% END %] |
|
183 |
</th> |
|
184 |
<th>[% 'position' | $T8 %] </th> |
|
185 |
<th style='text-align:center'><img src="image/updown.png" alt="[% LxERP.t8('reorder item') %]"></th> |
|
186 |
<th style='text-align:center'><img src="image/close.png" alt="[% LxERP.t8('delete item') %]"></th> |
|
187 |
[%- IF SELF.show_update_button -%] |
|
188 |
<th class="listheading" style='text-align:center' nowrap width="1"> |
|
189 |
[%- L.img_tag(src="image/rotate_cw.svg", |
|
190 |
alt=LxERP.t8('Update from master data'), |
|
191 |
title= LxERP.t8('Update from master data'), |
|
192 |
onclick="if (!confirm('" _ LxERP.t8("Are you sure to update all positions from master data?") _ "')) return false; kivi.Order.update_all_rows_from_master_data();", |
|
193 |
id='update_from_master', |
|
194 |
class='expand') %] |
|
195 |
</th> |
|
196 |
[%- END %] |
|
197 |
<th id="partnumber_header_id"><a href='#' onClick='javascript:kivi.Order.reorder_items("partnumber")'> [% 'Partnumber' | $T8 %]</a></th> |
|
198 |
[%- IF SELF.search_cvpartnumber -%] |
|
199 |
<th id="cvpartnumber_header_id"><a href='#' onClick='javascript:kivi.Order.reorder_items("cvpartnumber")'>[%- SELF.cv == "customer" ? LxERP.t8('Customer Part Number') : LxERP.t8('Model') %]</a></th> |
|
200 |
[%- END -%] |
|
201 |
<th id="partclass_header_id">[% 'Type' | $T8 %]</th> |
|
202 |
<th id="description_header_id"><a href='#' onClick='javascript:kivi.Order.reorder_items("description")'>[% 'Description' | $T8 %]</a></th> |
|
203 |
[%- IF (SELF.type == "sales_order_intake" || SELF.type == "sales_order" || SELF.type == "purchase_order" || SELF.type == "purchase_order_confirmation") -%] |
|
204 |
<th id="shipped_qty_header_id"><a href='#' onClick='javascript:kivi.Order.reorder_items("shipped_qty")'>[% 'Delivered' | $T8 %]</a></th> |
|
205 |
[%- END -%] |
|
206 |
<th id="qty_header_id"><a href='#' onClick='javascript:kivi.Order.reorder_items("qty")'> [% 'Qty' | $T8 %]</a></th> |
|
207 |
<th >[% 'Price Factor' | $T8 %]</th> |
|
208 |
<th >[% 'Unit' | $T8 %]</th> |
|
209 |
<th >[% 'Price Source' | $T8 %]</th> |
|
210 |
<th id="sellprice_header_id"><a href='#' onClick='javascript:kivi.Order.reorder_items("sellprice")'> [% 'Price' | $T8 %]</a></th> |
|
211 |
<th id="discount_header_id" ><a href='#' onClick='javascript:kivi.Order.reorder_items("discount")'> [% 'Discount' | $T8 %]</a></th> |
|
212 |
<th>[% 'Extended' | $T8 %]</th> |
|
213 |
</tr> |
|
214 |
</thead> |
|
215 |
[% FOREACH item = SELF.order.items_sorted %] |
|
216 |
[% PROCESS order/tabs/_row.html ITEM=item ID=(item.id||item.new_fake_id) %] |
|
217 |
[% END %] |
|
218 |
<tfoot> |
|
219 |
[% IF (SELF.type == "sales_quotation") || (SELF.type == "request_quotation") || (SELF.type == "purchase_quotation_intake") %] |
|
220 |
[% SET add_col = 0 %] |
|
221 |
[% ELSE %] |
|
222 |
[% SET add_col = 1 %] |
|
223 |
[% END %] |
|
224 |
[% IF SELF.search_cvpartnumber %] |
|
225 |
[% SET add_col = add_col + 1 %] |
|
226 |
[% END %] |
|
227 |
<tr id="subtotal_row_id"> |
|
228 |
<td colspan="[%- 10 + add_col %]"></td> |
|
229 |
[%- IF SELF.show_update_button -%] |
|
230 |
<td></td> |
|
231 |
[%- END -%] |
|
232 |
<th colspan="3">[% IF !SELF.order.taxincluded %][% 'Subtotal' | $T8 %][% END %]</th> |
|
233 |
<td class="numeric">[% IF !SELF.order.taxincluded %][% L.div_tag(SELF.order.netamount_as_number, id='netamount_id') %][% END %]</td> |
|
234 |
</tr> |
|
235 |
[% FOREACH tax = SELF.taxes %] |
|
236 |
[% PROCESS order/tabs/_tax_row.html TAX=tax TAXINCLUDED=SELF.order.taxincluded QUOTATION=SELF.order.quotation %] |
|
237 |
[% END %] |
|
238 |
<tr id="amount_row_id"> |
|
239 |
[%- IF (SELF.type == "sales_order_intake" || SELF.type == "sales_order" || SELF.type == "sales_quotation") -%] |
|
240 |
[%- SET marge_class = ((SELF.order.marge_total || 0) < 0) ? 'plus0' : '' -%] |
|
241 |
<th colspan="2">[% 'Ertrag' | $T8 %]</th> |
|
242 |
<td colspan="2" class="numeric">[%- L.div_tag(SELF.order.marge_total_as_number, id='marge_total_id', class=marge_class) %]</td> |
|
243 |
<th colspan="2">[% 'Ertrag prozentual' | $T8 %]</th> |
|
244 |
<td class="numeric">[%- LxERP.format_amount(SELF.order.marge_percent, 2) %] %</td> |
|
245 |
[%- ELSE -%] |
|
246 |
<td colspan="7"></td> |
|
247 |
[%- END -%] |
|
248 |
[%- IF SELF.show_update_button -%] |
|
249 |
<td></td> |
|
250 |
[%- END -%] |
|
251 |
<td colspan="[%- 3 + add_col %]"></td> |
|
252 |
<th colspan="3">[% 'Total' | $T8 %]</th> |
|
253 |
<td class="numeric">[% L.div_tag(SELF.order.amount_as_number, id='amount_id') %]</td> |
|
254 |
</tr> |
|
255 |
</tfoot> |
|
256 |
</table> |
|
257 |
|
|
258 |
</div><!-- /#row_table_scroll_id /.wrapper --> |
|
259 |
</div><!-- /#row_table_scroll_id /.wrapper --> |
|
260 |
<div class="pos_button1 control-panel" onclick="alert('Funktion')">Funktion*</div> |
|
261 |
<div class="pos_button2 control-panel">Funktion</div> |
|
262 |
<div class="pos_button3 control-panel">Auswahl bezahlen/zurücknehmen</div> |
|
263 |
<div class="pos_button4 control-panel">Nachlass gewähren</div> |
|
264 |
<div class="pos_button5 control-panel">Nachdruck Quittung</div> |
|
265 |
<div class="pos_button6 control-panel">Auf Rechnung</div> |
|
266 |
<div class="pos_button7 control-panel">Entnahme erfassen</div> |
|
267 |
<div class="pos_button8 control-panel">Auf Lieferschein</div> |
|
268 |
<div class="pos_button9 control-panel">Quittung parken</div> |
|
269 |
<div class="pos_button10 control-panel">geparkte Quittung</div> |
|
270 |
<div class="pos_button11 control-panel">Bezahlen</div> |
|
271 |
<div class="pos_button12 control-panel">Abbrechen</div> |
|
192 | 272 |
</div> |
193 | 273 |
|
194 | 274 |
|
templates/design40_webpages/pos/simple.html | ||
---|---|---|
1 |
[% USE T8 %] |
|
2 |
[% USE LxERP %] |
|
3 |
[% USE L %] |
|
4 |
[% USE P %] |
|
5 |
[% USE HTML %] |
|
6 |
|
|
7 |
<h1>[% FORM.title %]</h1> |
|
8 |
|
|
9 |
|
|
10 |
<div id="pos_content" class="wrapper" width="100%" > |
|
11 |
<div id="pos_left" style="float:left;width:50%"> |
|
12 |
<table> |
|
13 |
<tr> |
|
14 |
<th>[% 'Customer' | $T8 %]</th> |
|
15 |
<td> [% P.customer_vendor.picker("customer_id",'',type="customer", show_details="1", label=LxERP.t8('Customer')) %]</td> |
|
16 |
<td>[% L.button_tag("input_delete", LxERP.t8('Input delete') ) %]</td> |
|
17 |
</tr> |
|
18 |
</table> |
|
19 |
|
|
20 |
|
|
21 |
<div class="toggle_panel control-panel toggle_order_info %]"> |
|
22 |
<a href="#" onClick='javascript:$(".toggle_panel_block").toggle()' class="button toggle off neutral">Auftragsdaten</a> |
|
23 |
</div> |
|
24 |
<div class="toggle_panel_block" style="display:none;"> |
|
25 |
<div id="tables_left" style="float:left;"> |
|
26 |
<table style="width:40%"> |
|
27 |
<caption>[% 'Customer & Order Information' | $T8 %]</caption> |
|
28 |
<colgroup><col class="wi-mediumsmall"><col class="wi-lightwide"></colgroup> |
|
29 |
<tbody> |
|
30 |
<tr id='cp_row' [% IF !SELF.order.${SELF.cv}.contacts.size %]style='display:none'[% END %]> |
|
31 |
<th>[% 'Contact Person' | $T8 %]</th> |
|
32 |
<td>[% L.select_tag('order.cp_id', |
|
33 |
SELF.order.${SELF.cv}.contacts, |
|
34 |
default=SELF.order.cp_id, |
|
35 |
title_key='full_name_dep', |
|
36 |
value_key='cp_id', |
|
37 |
with_empty=1, |
|
38 |
class='wi-lightwide') %]</td> |
|
39 |
</tr> |
|
40 |
<tr> |
|
41 |
<th>[% 'Shipping Address' | $T8 %]</th> |
|
42 |
<td> |
|
43 |
<span id='shipto_selection' [% IF !SELF.order.${SELF.cv}.shipto.size %]style='display:none'[% END %]> |
|
44 |
[% shiptos = [ { shipto_id => "", displayable_id => LxERP.t8("No/individual shipping address") } ] ; |
|
45 |
FOREACH s = SELF.order.${SELF.cv}.shipto ; |
|
46 |
shiptos.push(s) ; |
|
47 |
END ; |
|
48 |
L.select_tag('order.shipto_id', |
|
49 |
shiptos, |
|
50 |
default=SELF.order.shipto_id, |
|
51 |
title_key='displayable_id', |
|
52 |
value_key='shipto_id', |
|
53 |
with_empty=0, |
|
54 |
class='wi-lightwide') %] |
|
55 |
</span> |
|
56 |
[% L.button_tag("kivi.Order.edit_custom_shipto()", |
|
57 |
LxERP.t8("Custom shipto"), |
|
58 |
class='button neutral below wi-lightwide') %] |
|
59 |
</td> |
|
60 |
</tr> |
|
61 |
<tr id="billing_address_row"[% IF !SELF.order.customer.additional_billing_addresses.as_list.size %]style="display:none"[% END %]> |
|
62 |
<th>[% 'Custom Billing Address' | $T8 %]</th> |
|
63 |
<td> |
|
64 |
[% L.select_tag('order.billing_address_id', |
|
65 |
SELF.order.customer.additional_billing_addresses, |
|
66 |
default=SELF.order.billing_address_id, |
|
67 |
title_key='displayable_id', |
|
68 |
value_key='id', |
|
69 |
with_empty=1, |
|
70 |
class='wi-lightwide') %] |
|
71 |
</td> |
|
72 |
</tr> |
|
73 |
[% PROCESS order/tabs/_business_info_row.html SELF=SELF %] |
|
74 |
<tr> |
|
75 |
<th>[% 'Steuersatz' | $T8 %]</th> |
|
76 |
<td>[% L.select_tag('order.taxzone_id', SELF.all_taxzones, default=SELF.order.taxzone_id, title_key='description', class='recalc wi-lightwide') %]</td> |
|
77 |
</tr> |
|
78 |
<!-- CURRENCY und EXCAHANGERATE rausgenommen --> |
|
79 |
[% IF SELF.all_languages.size %] |
|
80 |
<tr> |
|
81 |
<th>[% 'Language' | $T8 %]</th> |
|
82 |
<td> |
|
83 |
[% L.select_tag('order.language_id', SELF.all_languages, default=SELF.order.language_id, title_key='description', with_empty=1, class='wi-lightwide') %] |
|
84 |
</td> |
|
85 |
</tr> |
|
86 |
[% END %] |
|
87 |
[% IF SELF.all_departments.size %] |
|
88 |
<tr> |
|
89 |
<th>[% 'Department' | $T8 %]</th> |
|
90 |
<td> |
|
91 |
[% L.select_tag('order.department_id', SELF.all_departments, default=SELF.order.department_id, title_key='description', with_empty=1, class='wi-lightwide') %] |
|
92 |
</td> |
|
93 |
</tr> |
|
94 |
[% END %] |
|
95 |
<tr> |
|
96 |
<th>[% 'Shipping Point' | $T8 %]</th> |
|
97 |
<td>[% L.input_tag('order.shippingpoint', SELF.order.shippingpoint, class='wi-lightwide') %]</td> |
|
98 |
</tr> |
|
99 |
<tr> |
|
100 |
<th>[% 'Ship via' | $T8 %]</th> |
|
101 |
<td>[% L.input_tag('order.shipvia', SELF.order.shipvia, class='wi-lightwide') %]</td> |
|
102 |
</tr> |
|
103 |
<tr> |
|
104 |
<th>[% 'Transaction description' | $T8 %]</th> |
|
105 |
<td>[% L.input_tag('order.transaction_description', SELF.order.transaction_description, 'data-validate'=INSTANCE_CONF.get_require_transaction_description_ps ? 'required' : '', class='wi-lightwide') %]</td> |
|
106 |
</tr> |
|
107 |
<tr> |
|
108 |
<th>[% 'Project Number' | $T8 %]</th> |
|
109 |
<td>[% P.project.picker('order.globalproject_id', SELF.order.globalproject_id, class='wi-lightwide') %]</td> |
|
110 |
</tr> |
|
111 |
</tbody> |
|
112 |
</table> |
|
113 |
|
|
114 |
<table class="tbl-horizontal col"> |
|
115 |
<caption>[% 'Terms' | $T8 %]</caption> |
|
116 |
<colgroup><col class="wi-mediumsmall"><col class="wi-lightwide"></colgroup> |
|
117 |
<tbody> |
|
118 |
<tr> |
|
119 |
<td colspan="2"> |
|
120 |
<span class="label above">[% 'Payment Terms' | $T8 %]</span> |
|
121 |
[% L.select_tag('order.payment_id', |
|
122 |
SELF.all_payment_terms, |
|
123 |
default = SELF.order.payment_id, |
|
124 |
with_empty = 1, |
|
125 |
title_key = 'description', |
|
126 |
class = 'wi-mediumsmall-lightwide') %] |
|
127 |
</td> |
|
128 |
</tr> |
|
129 |
<tr> |
|
130 |
<td colspan="2"> |
|
131 |
<span class="label above">[% 'Delivery Terms' | $T8 %]</span> |
|
132 |
[% L.select_tag('order.delivery_term_id', |
|
133 |
SELF.all_delivery_terms, |
|
134 |
default = SELF.order.delivery_term_id, |
|
135 |
with_empty = 1, |
|
136 |
title_key = 'description', |
|
137 |
class = 'wi-mediumsmall-lightwide') %] |
|
138 |
</td> |
|
139 |
</tr> |
|
140 |
<tr id="taxincluded_row_id"> |
|
141 |
<th>[% IF !SELF.taxes.size %]<label for="order.taxincluded">[% 'Tax Included' | $T8 %]</label> [% END %]</th> |
|
142 |
<td>[% IF !SELF.taxes.size %][% L.yes_no_tag('order.taxincluded', SELF.order.taxincluded, class='recalc') %][% END %]</td> |
|
143 |
</tr> |
|
144 |
</tbody> |
|
145 |
</table> |
|
146 |
</div> <!-- end table_left --> |
|
147 |
<div id="tables_right" style="float:left;"> |
|
148 |
<table class="tbl-horizontal col"> |
|
149 |
<caption>[% 'Notes' | $T8 %]</caption> |
|
150 |
<colgroup><col class="wi-wide"></colgroup> |
|
151 |
<tbody> |
|
152 |
<tr> |
|
153 |
<td class="wi-wide">[% L.textarea_tag('order.notes', SELF.order.notes, wrap="soft",rows=7, class="texteditor wi-wide") %]</td> |
|
154 |
</tr> |
|
155 |
<tr> |
|
156 |
<td><span class="label above">[% 'Internal Notes' | $T8 %]</span>[% L.textarea_tag('order.intnotes', SELF.order.intnotes, wrap="soft", style="height: 150px", class="wi-wide") %]</td> |
|
157 |
</tr> |
|
158 |
</tbody> |
|
159 |
</table> |
|
160 |
</div> <!-- end table_left --> |
|
161 |
</div><!-- /.filter_toggle --> |
|
162 |
|
|
163 |
[% PROCESS pos/tabs/_item_input.html SELF=SELF %] |
|
164 |
[% PROCESS pos/tabs/_rows_tmp.html %] |
|
165 |
</div> <!-- Ende pos_left --> |
|
166 |
<div id="pos_right" style="float:left;width:50% "> |
|
167 |
<div class="container_pos_left"> |
|
168 |
<div class="empty"></div> |
|
169 |
<div class="pos_button control-panel" onclick="alert('Funktion')">Funktion*</div> |
|
170 |
<div class="pos_button control-panel">Funktion</div> |
|
171 |
<div class="pos_button control-panel">[% "Salesman" | $T8 %]<br> |
|
172 |
[% L.select_tag('order.salesman_id', |
|
173 |
SELF.all_salesmen, |
|
174 |
#[{id=1,name=werner},{id=2,name=Max}], |
|
175 |
default=(SELF.order.salesman_id ? SELF.order.salesman_id : SELF.current_employee_id), |
|
176 |
class='wi-normal', |
|
177 |
title_key='safe_name') %] |
|
178 |
</div> |
|
179 |
<div class="empty"></div> |
|
180 |
<div class="pos_button control-panel">Auswahl bezahlen/zurücknehmen</div> |
|
181 |
<div class="pos_button control-panel">Nachlass gewähren</div> |
|
182 |
<div class="empty"></div> |
|
183 |
<div class="empty"></div> |
|
184 |
<div class="pos_button control-panel">Nachdruck Quittung</div> |
|
185 |
<div class="pos_button control-panel">Auf Rechnung</div> |
|
186 |
<div class="empty"></div> |
|
187 |
<div class="empty"></div> |
|
188 |
<div class="pos_button control-panel">Entnahme erfassen</div> |
|
189 |
<div class="pos_button control-panel">Auf Lieferschein</div> |
|
190 |
<div class="empty"></div> |
|
191 |
<div class="empty"></div> |
|
192 |
<div class="pos_button control-panel">Quittung parken</div> |
|
193 |
<div class="pos_button control-panel">geparkte Quittung</div> |
|
194 |
<div class="empty"></div> |
|
195 |
<div class="empty"></div> |
|
196 |
<div class="pos_button control-panel">Bezahlen</div> |
|
197 |
<div class="pos_button control-panel">Abbrechen</div> |
|
198 |
<div class="empty"></div> |
|
199 |
</div> |
|
200 |
</div> <!-- Ende pos_right --> |
|
201 |
|
|
202 |
|
|
203 |
|
|
204 |
|
|
205 |
|
|
206 |
|
|
207 |
|
|
208 |
|
|
209 |
|
|
210 |
|
templates/design40_webpages/pos/tabs/_item_input.html | ||
---|---|---|
55 | 55 |
</div><!-- /.entry-panel --> |
56 | 56 |
|
57 | 57 |
</div><!-- /.wrapper --> |
58 |
<div id="row_table_scroll_id" class="wrapper horizontal-scroll-wrapper" style="overflow-y: auto; height:100%;"> |
|
59 |
|
|
60 |
<table id="row_table_id" class="tbl-list"> |
templates/design40_webpages/pos/tabs/_row.html | ||
---|---|---|
1 |
[% USE T8 %] |
|
2 |
[% USE HTML %] |
|
3 |
[% USE LxERP %] |
|
4 |
[% USE L %] |
|
5 |
[% USE P %] |
|
6 |
|
|
7 |
<tbody class="row_entry listrow" data-position="[%- HTML.escape(ITEM.position) -%]"[%- IF MYCONFIG.show_form_details -%] data-expanded="1"[%- END -%]> |
|
8 |
<tr> |
|
9 |
<td> |
|
10 |
[% IF MYCONFIG.show_form_details %] |
|
11 |
[% L.img_tag(src="image/collapse.svg", |
|
12 |
alt=LxERP.t8('Hide details'), title=LxERP.t8('Hide details'), class="expand") %] |
|
13 |
[% ELSE %] |
|
14 |
[% L.img_tag(src="image/expand.svg", |
|
15 |
alt=LxERP.t8('Show details'), title=LxERP.t8('Show details'), class="expand") %] |
|
16 |
[% END %] |
|
17 |
[% L.hidden_tag("orderitem_ids[+]", ID) %] |
|
18 |
[% L.hidden_tag("converted_from_record_item_type_ref[+]", ITEM.converted_from_record_item_type_ref) %] |
|
19 |
[% L.hidden_tag("converted_from_record_item_id[+]", ITEM.converted_from_record_item_id) %] |
|
20 |
[% L.hidden_tag("order.orderitems[+].id", ITEM.id, id='item_' _ ID) %] |
|
21 |
[% L.hidden_tag("order.orderitems[].parts_id", ITEM.parts_id) %] |
|
22 |
[% L.hidden_tag("basket_item_ids[+]", ITEM.basket_item_id) %] |
|
23 |
</td> |
|
24 |
<td class="center"><div name="position">[% HTML.escape(ITEM.position) %]</div></td> |
|
25 |
<td><img src="image/updown.png" alt="[% LxERP.t8('reorder item') %]" class="dragdrop"></td> |
|
26 |
<td> |
|
27 |
[% L.button_tag("kivi.Order.delete_order_item_row(this)", |
|
28 |
LxERP.t8("X"), |
|
29 |
confirm=LxERP.t8("Are you sure?")) %] |
|
30 |
</td> |
|
31 |
[%- IF SELF.show_update_button -%] |
|
32 |
<td> |
|
33 |
[%- L.img_tag(src="image/rotate_cw.svg", |
|
34 |
alt=LxERP.t8('Update from master data'), |
|
35 |
title= LxERP.t8('Update from master data'), |
|
36 |
onclick="if (!confirm('" _ LxERP.t8("Are you sure to update this position from master data?") _ "')) return false; kivi.Order.update_row_from_master_data(this);", |
|
37 |
id='update_from_master', |
|
38 |
class="expand") %] |
|
39 |
</td> |
|
40 |
[%- END -%] |
|
41 |
<td> |
|
42 |
<div name="partnumber"> |
|
43 |
[%- P.link_tag(SELF.url_for(controller='Part', action='edit', 'part.id'=ITEM.part.id), ITEM.part.partnumber, target="_blank", title=LxERP.t8('Open in new window')) -%] |
|
44 |
</div> |
|
45 |
</td> |
|
46 |
[%- IF SELF.search_cvpartnumber -%] |
|
47 |
<td><div name="cvpartnumber">[% HTML.escape(ITEM.cvpartnumber) %]</div></td> |
|
48 |
[%- END -%] |
|
49 |
<td><div name="partclassification">[% ITEM.part.presenter.typeclass_abbreviation %]</div></td> |
|
50 |
<td> |
|
51 |
[% L.areainput_tag("order.orderitems[].description", |
|
52 |
ITEM.description, |
|
53 |
size='40', |
|
54 |
class='wi-lightwide') %] |
|
55 |
[% L.hidden_tag("order.orderitems[].longdescription", ITEM.longdescription) %] |
|
56 |
[% L.button_tag("kivi.Order.show_longdescription_dialog(this)", LxERP.t8("L"), class="wi-tiny neutral") %] |
|
57 |
</td> |
|
58 |
[% IF (SELF.type == "sales_order_intake" || SELF.type == "sales_order" || SELF.type == "purchase_order" || SELF.type == "purchase_order_confirmation") %] |
|
59 |
<td> |
|
60 |
[%- L.div_tag(LxERP.format_amount(ITEM.shipped_qty, 2, 0) _ ' ' _ ITEM.unit, name="shipped_qty", class="numeric") %] |
|
61 |
</td> |
|
62 |
[%- END -%] |
|
63 |
<td> |
|
64 |
[% L.input_tag("order.orderitems[].qty_as_number", |
|
65 |
ITEM.qty_as_number, |
|
66 |
size = 5, |
|
67 |
class="recalc reformat_number numeric wi-verysmall") %] |
|
68 |
[% IF ITEM.part.formel %] |
|
69 |
[% L.button_tag("kivi.Order.show_calculate_qty_dialog(this)", LxERP.t8("*/"), class="neutral") %] |
|
70 |
[% L.hidden_tag("formula[+]", ITEM.part.formel) %] |
|
71 |
[% END %] |
|
72 |
</td> |
|
73 |
<td> |
|
74 |
[% L.select_tag("order.orderitems[].price_factor_id", |
|
75 |
SELF.all_price_factors, |
|
76 |
default = ITEM.price_factor_id, |
|
77 |
title_key = 'description', |
|
78 |
with_empty = 1, |
|
79 |
class="recalc wi-mediumsmall") %] |
|
80 |
</td> |
|
81 |
<td> |
|
82 |
[% L.select_tag("order.orderitems[].unit", |
|
83 |
ITEM.part.available_units, |
|
84 |
default = ITEM.unit, |
|
85 |
title_key = 'name', |
|
86 |
value_key = 'name', |
|
87 |
class = 'unitselect wi-mediumsmall') %] |
|
88 |
</td> |
|
89 |
<td> |
|
90 |
[% L.button_tag("kivi.Order.price_chooser_item_row(this)", |
|
91 |
ITEM.active_price_source.source_description _ ' | ' _ ITEM.active_discount_source.source_description, |
|
92 |
name = "price_chooser_button", |
|
93 |
class = "neutral") %] |
|
94 |
</td> |
|
95 |
[% SET RIGHT_TO_EDIT_PRICES = 0 %] |
|
96 |
[% IF (SELF.type == "sales_order_intake" || SELF.type == "sales_order" || SELF.type == "sales_quotation") %] |
|
97 |
[% SET RIGHT_TO_EDIT_PRICES = AUTH.assert('sales_edit_prices', 1) %] |
|
98 |
[% END %] |
|
99 |
[% IF (SELF.type == "purchase_order" || SELF.type == "purchase_order_confirmation" || SELF.type == "request_quotation" || SELF.type == "purchase_quotation_intake") %] |
|
100 |
[% SET RIGHT_TO_EDIT_PRICES = AUTH.assert('purchase_edit_prices', 1) %] |
|
101 |
[% END %] |
|
102 |
<td> |
|
103 |
[% L.hidden_tag("order.orderitems[].active_price_source", ITEM.active_price_source.source) %] |
|
104 |
[% SET EDIT_PRICE = (RIGHT_TO_EDIT_PRICES && ITEM.active_price_source.source == '') %] |
|
105 |
<div name="editable_price" [% IF !EDIT_PRICE %]style="display:none"[% END %] class="numeric"> |
|
106 |
[% L.input_tag("order.orderitems[].sellprice_as_number", |
|
107 |
ITEM.sellprice_as_number, |
|
108 |
size = 10, |
|
109 |
disabled=(EDIT_PRICE? '' : 1), |
|
110 |
class="recalc reformat_number numeric wi-verysmall") %] |
|
111 |
</div> |
|
112 |
<div name="not_editable_price" [% IF EDIT_PRICE %]style="display:none"[% END %]> |
|
113 |
[% L.div_tag(ITEM.sellprice_as_number, name="sellprice_text", class="numeric plain-data") %] <!-- PENDENT: plain-data in DIV noch dem CSS hinzufuegen --> |
|
114 |
[% L.hidden_tag("order.orderitems[].sellprice_as_number", |
|
115 |
ITEM.sellprice_as_number, |
|
116 |
disabled=(EDIT_PRICE? 1 : '')) %] |
|
117 |
</div> |
|
118 |
</td> |
|
119 |
<td> |
|
120 |
[% L.hidden_tag("order.orderitems[].active_discount_source", ITEM.active_discount_source.source) %] |
|
121 |
[% SET EDIT_DISCOUNT = (RIGHT_TO_EDIT_PRICES && ITEM.active_discount_source.source == '') %] |
|
122 |
<div name="editable_discount" [% IF !EDIT_DISCOUNT %]style="display:none"[% END %] class="numeric"> |
|
123 |
[% L.input_tag("order.orderitems[].discount_as_percent", |
|
124 |
ITEM.discount_as_percent, |
|
125 |
size = 5, |
|
126 |
disabled=(EDIT_DISCOUNT? '' : 1), |
|
127 |
class="recalc reformat_number numeric") %] |
|
128 |
</div> |
|
129 |
<div name="not_editable_discount" [% IF EDIT_DISCOUNT %]style="display:none"[% END %]> |
|
130 |
[% L.div_tag(ITEM.discount_as_percent, name="discount_text", class="numeric") %] |
|
131 |
[% L.hidden_tag("order.orderitems[].discount_as_percent", |
|
132 |
ITEM.discount_as_percent, |
|
133 |
disabled=(EDIT_DISCOUNT? 1 : '')) %] |
|
134 |
</div> |
|
135 |
</td> |
|
136 |
<td>[% L.div_tag(LxERP.format_amount(ITEM.linetotal, 2, 0), name="linetotal", class="numeric") %]</td> |
|
137 |
</tr> |
|
138 |
<tr [% IF !MYCONFIG.show_form_details %]style="display:none"[% END %]> |
|
139 |
<td colspan="100%"> |
|
140 |
[% IF MYCONFIG.show_form_details || ITEM.render_second_row %] |
|
141 |
<div name="second_row" data-loaded="1"> |
|
142 |
[% PROCESS order/tabs/_second_row.html ITEM=ITEM TYPE=SELF.type %] |
|
143 |
</div> |
|
144 |
[% ELSE %] |
|
145 |
<div name="second_row" id="second_row_[% ID %]"> |
|
146 |
[% LxERP.t8("Loading...") %] |
|
147 |
</div> |
|
148 |
[% END %] |
|
149 |
</td> |
|
150 |
</tr> |
|
151 |
</tbody> |
Auch abrufbar als: Unified diff
POS WIP