Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 9bace48d

Von Werner Hahn vor etwa 1 Monat hinzugefügt

  • ID 9bace48d098168de022afeb3a5c7767cc712418a
  • Vorgänger 6a559670

POS WIP

Unterschiede anzeigen:

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