Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
T
third-party
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
2
Merge Requests
2
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
cooperatic-foodcoops
third-party
Commits
d969d7c1
Commit
d969d7c1
authored
Jun 30, 2021
by
Damien Moulard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
AAC: linting
parent
8ee8712f
Pipeline
#1122
passed with stage
in 1 minute 21 seconds
Changes
1
Pipelines
2
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
116 additions
and
75 deletions
+116
-75
orders_helper.js
orders/static/js/orders_helper.js
+116
-75
No files found.
orders/static/js/orders_helper.js
View file @
d969d7c1
...
@@ -123,7 +123,7 @@ function add_product() {
...
@@ -123,7 +123,7 @@ function add_product() {
update_main_screen
({
'sort_order_dir'
:
'desc'
});
update_main_screen
({
'sort_order_dir'
:
'desc'
});
update_cdb_order
();
update_cdb_order
();
}
else
{
}
else
{
alert
(
"L'article n'a pas toutes les caractéristiques pour être ajouté."
)
alert
(
"L'article n'a pas toutes les caractéristiques pour être ajouté."
)
;
}
}
$
(
"#product_input"
).
val
(
''
);
$
(
"#product_input"
).
val
(
''
);
},
},
...
@@ -136,7 +136,7 @@ function add_product() {
...
@@ -136,7 +136,7 @@ function add_product() {
alert
(
'Erreur lors de la récupération des informations, réessayer plus tard.'
);
alert
(
'Erreur lors de la récupération des informations, réessayer plus tard.'
);
}
}
});
});
return
0
;
return
0
;
}
}
...
@@ -145,13 +145,17 @@ function add_product() {
...
@@ -145,13 +145,17 @@ function add_product() {
* Set the computed qty for the first supplier only.
* Set the computed qty for the first supplier only.
*/
*/
function
compute_products_coverage_qties
()
{
function
compute_products_coverage_qties
()
{
for
(
const
[
key
,
product
]
of
Object
.
entries
(
products
))
{
for
(
const
[
key
,
product
]
of
Object
.
entries
(
products
))
{
let
purchase_qty_for_coverage
=
null
;
let
purchase_qty_for_coverage
=
null
;
// Durée couverture produit = (stock + qté entrante + qté commandée ) / conso quotidienne
// Durée couverture produit = (stock + qté entrante + qté commandée ) / conso quotidienne
const
stock
=
product
.
qty_available
;
const
stock
=
product
.
qty_available
;
const
incoming_qty
=
product
.
incoming_qty
;
const
incoming_qty
=
product
.
incoming_qty
;
const
daily_conso
=
product
.
daily_conso
;
const
daily_conso
=
product
.
daily_conso
;
purchase_qty_for_coverage
=
order_doc
.
coverage_days
*
daily_conso
-
stock
-
incoming_qty
;
purchase_qty_for_coverage
=
order_doc
.
coverage_days
*
daily_conso
-
stock
-
incoming_qty
;
purchase_qty_for_coverage
=
(
purchase_qty_for_coverage
<
0
)
?
0
:
purchase_qty_for_coverage
;
purchase_qty_for_coverage
=
(
purchase_qty_for_coverage
<
0
)
?
0
:
purchase_qty_for_coverage
;
...
@@ -204,6 +208,7 @@ function add_supplier() {
...
@@ -204,6 +208,7 @@ function add_supplier() {
selected_suppliers
.
push
(
supplier
);
selected_suppliers
.
push
(
supplier
);
let
url
=
"/orders/get_supplier_products"
;
let
url
=
"/orders/get_supplier_products"
;
url
+=
"?sid="
+
encodeURIComponent
(
supplier
.
id
);
url
+=
"?sid="
+
encodeURIComponent
(
supplier
.
id
);
// Fetch supplier products
// Fetch supplier products
...
@@ -276,7 +281,8 @@ function save_supplier_product_association(product, supplier, cell) {
...
@@ -276,7 +281,8 @@ function save_supplier_product_association(product, supplier, cell) {
// If value is a number
// If value is a number
if
(
isNaN
(
package_qty
)
||
isNaN
(
price
))
{
if
(
isNaN
(
package_qty
)
||
isNaN
(
price
))
{
closeModal
();
closeModal
();
alert
(
`Les champs "Prix" et "Colisage" doivent être remplis et valides. L'association n'a pas été sauvegardée.`
)
alert
(
`Les champs "Prix" et "Colisage" doivent être remplis et valides. L'association n'a pas été sauvegardée.`
);
return
-
1
;
return
-
1
;
}
}
...
@@ -284,7 +290,7 @@ function save_supplier_product_association(product, supplier, cell) {
...
@@ -284,7 +290,7 @@ function save_supplier_product_association(product, supplier, cell) {
product_tmpl_id
:
product
.
id
,
product_tmpl_id
:
product
.
id
,
supplier_id
:
supplier
.
id
,
supplier_id
:
supplier
.
id
,
package_qty
:
package_qty
,
package_qty
:
package_qty
,
price
:
price
,
price
:
price
};
};
// Send request to create association
// Send request to create association
...
@@ -297,15 +303,15 @@ function save_supplier_product_association(product, supplier, cell) {
...
@@ -297,15 +303,15 @@ function save_supplier_product_association(product, supplier, cell) {
data
:
JSON
.
stringify
(
data
),
data
:
JSON
.
stringify
(
data
),
success
:
()
=>
{
success
:
()
=>
{
// Save supplierinfo in product
// Save supplierinfo in product
if
(
!
'suppliersinfo'
in
product
)
{
if
(
!
(
'suppliersinfo'
in
product
)
)
{
product
.
suppliersinfo
=
[]
product
.
suppliersinfo
=
[]
;
}
}
product
.
suppliersinfo
.
push
({
product
.
suppliersinfo
.
push
({
supplier_id
:
supplier
.
id
,
supplier_id
:
supplier
.
id
,
package_qty
:
package_qty
,
package_qty
:
package_qty
,
price
:
price
price
:
price
})
})
;
// Save relation locally
// Save relation locally
save_supplier_products
(
supplier
,
[
product
]);
save_supplier_products
(
supplier
,
[
product
]);
...
@@ -335,6 +341,8 @@ function save_supplier_product_association(product, supplier, cell) {
...
@@ -335,6 +341,8 @@ function save_supplier_product_association(product, supplier, cell) {
alert
(
'Erreur lors de la sauvegarde de l
\'
association. Veuillez ré-essayer plus tard.'
);
alert
(
'Erreur lors de la sauvegarde de l
\'
association. Veuillez ré-essayer plus tard.'
);
}
}
});
});
return
0
;
}
}
/**
/**
...
@@ -398,8 +406,8 @@ function is_product_related_to_supplier(product, supplier) {
...
@@ -398,8 +406,8 @@ function is_product_related_to_supplier(product, supplier) {
/**
/**
* Update 'purchase_ok' of a product
* Update 'purchase_ok' of a product
*
*
* @param {int} p_id product id
* @param {int} p_id product id
* @param {Boolean} npa value to set purchase_ok to
* @param {Boolean} npa value to set purchase_ok to
*/
*/
function
set_product_npa
(
p_id
,
npa
)
{
function
set_product_npa
(
p_id
,
npa
)
{
...
@@ -420,6 +428,7 @@ function set_product_npa(p_id, npa) {
...
@@ -420,6 +428,7 @@ function set_product_npa(p_id, npa) {
data
:
JSON
.
stringify
(
data
),
data
:
JSON
.
stringify
(
data
),
success
:
()
=>
{
success
:
()
=>
{
const
index
=
products
.
findIndex
(
p
=>
p
.
id
==
p_id
);
const
index
=
products
.
findIndex
(
p
=>
p
.
id
==
p_id
);
products
[
index
].
purchase_ok
=
data
[
"purchase_ok"
];
products
[
index
].
purchase_ok
=
data
[
"purchase_ok"
];
update_cdb_order
();
update_cdb_order
();
...
@@ -656,7 +665,7 @@ function create_orders() {
...
@@ -656,7 +665,7 @@ function create_orders() {
'price_unit'
:
p_supplierinfo
.
price
,
'price_unit'
:
p_supplierinfo
.
price
,
'supplier_taxes_id'
:
p
.
supplier_taxes_id
,
'supplier_taxes_id'
:
p
.
supplier_taxes_id
,
'product_variant_ids'
:
p
.
product_variant_ids
'product_variant_ids'
:
p
.
product_variant_ids
})
})
;
}
}
}
}
}
}
...
@@ -664,6 +673,7 @@ function create_orders() {
...
@@ -664,6 +673,7 @@ function create_orders() {
if
(
Object
.
keys
(
orders_data
.
suppliers_data
).
length
===
0
)
{
if
(
Object
.
keys
(
orders_data
.
suppliers_data
).
length
===
0
)
{
closeModal
();
closeModal
();
alert
(
"Commande non créée : vous n'avez rentré aucune quantité !"
);
alert
(
"Commande non créée : vous n'avez rentré aucune quantité !"
);
return
-
1
;
return
-
1
;
}
}
...
@@ -685,9 +695,10 @@ function create_orders() {
...
@@ -685,9 +695,10 @@ function create_orders() {
'id'
:
new_order
.
id_po
,
'id'
:
new_order
.
id_po
,
'supplier_id'
:
new_order
.
supplier_id
,
'supplier_id'
:
new_order
.
supplier_id
,
'supplier_name'
:
supplier_name
'supplier_name'
:
supplier_name
})
})
;
let
new_order_template
=
$
(
"#templates #new_order_item_template"
);
let
new_order_template
=
$
(
"#templates #new_order_item_template"
);
new_order_template
.
find
(
".new_order_supplier_name"
).
text
(
supplier_name
);
new_order_template
.
find
(
".new_order_supplier_name"
).
text
(
supplier_name
);
new_order_template
.
find
(
".new_order_po"
).
text
(
`PO
${
new_order
.
id_po
}
`
);
new_order_template
.
find
(
".new_order_po"
).
text
(
`PO
${
new_order
.
id_po
}
`
);
new_order_template
.
find
(
".download_order_file_button"
).
attr
(
'id'
,
`download_attachment_
${
new_order
.
id_po
}
`
);
new_order_template
.
find
(
".download_order_file_button"
).
attr
(
'id'
,
`download_attachment_
${
new_order
.
id_po
}
`
);
...
@@ -708,7 +719,8 @@ function create_orders() {
...
@@ -708,7 +719,8 @@ function create_orders() {
closeModal
();
closeModal
();
},
},
error
:
function
(
data
)
{
error
:
function
(
data
)
{
let
msg
=
"erreur serveur lors de la création des product orders"
let
msg
=
"erreur serveur lors de la création des product orders"
;
err
=
{
msg
:
msg
,
ctx
:
'save_supplier_product_association'
,
data
:
orders_data
};
err
=
{
msg
:
msg
,
ctx
:
'save_supplier_product_association'
,
data
:
orders_data
};
if
(
typeof
data
.
responseJSON
!=
'undefined'
&&
typeof
data
.
responseJSON
.
error
!=
'undefined'
)
{
if
(
typeof
data
.
responseJSON
!=
'undefined'
&&
typeof
data
.
responseJSON
.
error
!=
'undefined'
)
{
err
.
msg
+=
' : '
+
data
.
responseJSON
.
error
;
err
.
msg
+=
' : '
+
data
.
responseJSON
.
error
;
...
@@ -719,6 +731,8 @@ function create_orders() {
...
@@ -719,6 +731,8 @@ function create_orders() {
alert
(
'Erreur lors de la création des commandes. Veuillez ré-essayer plus tard.'
);
alert
(
'Erreur lors de la création des commandes. Veuillez ré-essayer plus tard.'
);
}
}
});
});
return
0
;
}
}
/**
/**
...
@@ -741,11 +755,11 @@ function get_order_attachments() {
...
@@ -741,11 +755,11 @@ function get_order_attachments() {
contentType
:
"application/json; charset=utf-8"
,
contentType
:
"application/json; charset=utf-8"
,
success
:
function
(
data
)
{
success
:
function
(
data
)
{
for
(
let
res_po
of
data
.
res
)
{
for
(
let
res_po
of
data
.
res
)
{
$
(
`#download_attachment_
${
res_po
.
id_po
}
`
).
attr
(
'href'
,
`
${
odoo_server
}
/web/content/
${
res_po
.
id_attachment
}
?download=true`
)
$
(
`#download_attachment_
${
res_po
.
id_po
}
`
).
attr
(
'href'
,
`
${
odoo_server
}
/web/content/
${
res_po
.
id_attachment
}
?download=true`
)
;
}
}
$
(
'#created_orders_area .download_order_file_loading'
).
hide
()
$
(
'#created_orders_area .download_order_file_loading'
).
hide
()
;
$
(
'#created_orders_area .download_order_file_button'
).
show
()
$
(
'#created_orders_area .download_order_file_button'
).
show
()
;
},
},
error
:
function
()
{
error
:
function
()
{
$
.
notify
(
$
.
notify
(
...
@@ -755,7 +769,7 @@ function get_order_attachments() {
...
@@ -755,7 +769,7 @@ function get_order_attachments() {
className
:
"error"
className
:
"error"
}
}
);
);
setTimeout
(
get_order_attachments
,
10000
);
setTimeout
(
get_order_attachments
,
10000
);
}
}
});
});
...
@@ -787,8 +801,10 @@ function back() {
...
@@ -787,8 +801,10 @@ function back() {
* Create a string to represent a supplier column in product data
* Create a string to represent a supplier column in product data
* @returns String
* @returns String
*/
*/
function
supplier_column_name
(
supplier
)
{
function
supplier_column_name
(
supplier
)
{
const
supplier_id
=
(
'supplier_id'
in
supplier
)
?
supplier
.
supplier_id
:
supplier
.
id
const
supplier_id
=
(
'supplier_id'
in
supplier
)
?
supplier
.
supplier_id
:
supplier
.
id
;
return
`qty_supplier_
${
supplier_id
}
`
;
return
`qty_supplier_
${
supplier_id
}
`
;
}
}
...
@@ -833,15 +849,16 @@ function _compute_product_data(product) {
...
@@ -833,15 +849,16 @@ function _compute_product_data(product) {
let
item
=
{};
let
item
=
{};
/* Supplier related data */
/* Supplier related data */
let
purchase_qty
=
0
;
// Calculate product's total purchase qty
let
purchase_qty
=
0
;
// Calculate product's total purchase qty
let
p_package_qties
=
[];
// Look for differences in package qties
let
p_package_qties
=
[];
// Look for differences in package qties
for
(
let
p_supplierinfo
of
product
.
suppliersinfo
)
{
for
(
let
p_supplierinfo
of
product
.
suppliersinfo
)
{
// Preset qty for input if product related to supplier: existing qty or null (null -> qty to be set, display an empty input)
// Preset qty for input if product related to supplier: existing qty or null (null -> qty to be set, display an empty input)
let
supplier_qty
=
(
"qty"
in
p_supplierinfo
)
?
p_supplierinfo
.
qty
:
null
;
let
supplier_qty
=
(
"qty"
in
p_supplierinfo
)
?
p_supplierinfo
.
qty
:
null
;
item
[
supplier_column_name
(
p_supplierinfo
)]
=
supplier_qty
;
item
[
supplier_column_name
(
p_supplierinfo
)]
=
supplier_qty
;
// Update product's total qty to buy if qty set for this supplier
// Update product's total qty to buy if qty set for this supplier
if
(
supplier_qty
!==
null
)
{
if
(
supplier_qty
!==
null
)
{
purchase_qty
+=
+
parseFloat
(
supplier_qty
*
p_supplierinfo
.
package_qty
).
toFixed
(
2
);
purchase_qty
+=
+
parseFloat
(
supplier_qty
*
p_supplierinfo
.
package_qty
).
toFixed
(
2
);
}
}
...
@@ -859,26 +876,27 @@ function _compute_product_data(product) {
...
@@ -859,26 +876,27 @@ function _compute_product_data(product) {
}
}
}
}
if
(
p_package_qties
.
length
==
0
||
!
p_package_qties
.
every
(
(
val
,
i
,
arr
)
=>
val
===
arr
[
0
]
))
{
if
(
p_package_qties
.
length
==
0
||
!
p_package_qties
.
every
(
(
val
,
i
,
arr
)
=>
val
===
arr
[
0
]
))
{
// Don't display package qty if no supplierinf or if not all package qties are equals,
// Don't display package qty if no supplierinf or if not all package qties are equals,
item
.
package_qty
=
'X'
;
item
.
package_qty
=
'X'
;
}
else
{
}
else
{
// If all package qties are equals, display it
// If all package qties are equals, display it
item
.
package_qty
=
p_package_qties
[
0
];
item
.
package_qty
=
p_package_qties
[
0
];
}
}
/* Coverage related data */
/* Coverage related data */
if
(
order_doc
.
coverage_days
!==
null
)
{
if
(
order_doc
.
coverage_days
!==
null
)
{
let
unmet_needs
=
product
.
daily_conso
*
order_doc
.
coverage_days
-
product
.
qty_available
-
product
.
incoming_qty
-
purchase_qty
;
let
unmet_needs
=
product
.
daily_conso
*
order_doc
.
coverage_days
-
product
.
qty_available
-
product
.
incoming_qty
-
purchase_qty
;
unmet_needs
=
-
Math
.
round
(
unmet_needs
);
unmet_needs
=
-
Math
.
round
(
unmet_needs
);
unmet_needs
=
(
unmet_needs
>
0
)
?
0
:
unmet_needs
;
unmet_needs
=
(
unmet_needs
>
0
)
?
0
:
unmet_needs
;
item
.
unmet_needs
=
unmet_needs
;
item
.
unmet_needs
=
unmet_needs
;
}
else
{
}
else
{
item
.
unmet_needs
=
'X'
;
item
.
unmet_needs
=
'X'
;
}
}
return
item
return
item
;
}
}
/**
/**
...
@@ -990,18 +1008,21 @@ function prepare_datatable_columns() {
...
@@ -990,18 +1008,21 @@ function prepare_datatable_columns() {
if
(
data
===
false
)
{
if
(
data
===
false
)
{
return
`<div id="
${
base_id
}
_cell_content" class="custom_cell_content">X</div>`
;
return
`<div id="
${
base_id
}
_cell_content" class="custom_cell_content">X</div>`
;
}
else
{
}
else
{
let
content
=
`<div id="
${
base_id
}
_cell_content" class="custom_cell_content">
let
content
=
`<div id="
${
base_id
}
_cell_content" class="custom_cell_content">
<input type="number" class="product_qty_input" id="
${
base_id
}
_qty_input" min="0" value=
${
data
}
>`
;
<input type="number" class="product_qty_input" id="
${
base_id
}
_qty_input" min="0" value=
${
data
}
>`
;
if
(
full
.
package_qty
===
'X'
)
{
if
(
full
.
package_qty
===
'X'
)
{
let
product_data
=
products
.
find
(
p
=>
p
.
id
==
full
.
id
);
let
product_data
=
products
.
find
(
p
=>
p
.
id
==
full
.
id
);
if
(
product_data
!==
undefined
)
{
if
(
product_data
!==
undefined
)
{
let
supplierinfo
=
product_data
.
suppliersinfo
.
find
(
psi
=>
psi
.
supplier_id
==
supplier
.
id
);
let
supplierinfo
=
product_data
.
suppliersinfo
.
find
(
psi
=>
psi
.
supplier_id
==
supplier
.
id
);
content
+=
`<span class="supplier_package_qty">Colisage :
${
supplierinfo
.
package_qty
}
</span>`
;
content
+=
`<span class="supplier_package_qty">Colisage :
${
supplierinfo
.
package_qty
}
</span>`
;
}
}
}
}
content
+=
`</div>`
content
+=
`</div>`
;
return
content
;
return
content
;
}
}
}
}
...
@@ -1060,6 +1081,7 @@ function display_products(params) {
...
@@ -1060,6 +1081,7 @@ function display_products(params) {
const
data
=
prepare_datatable_data
();
const
data
=
prepare_datatable_data
();
const
columns
=
prepare_datatable_columns
();
const
columns
=
prepare_datatable_columns
();
let
sort_order_dir
=
"asc"
;
let
sort_order_dir
=
"asc"
;
if
(
params
!=
undefined
&&
typeof
params
.
sort_order_dir
!=
"undefined"
)
{
if
(
params
!=
undefined
&&
typeof
params
.
sort_order_dir
!=
"undefined"
)
{
sort_order_dir
=
params
.
sort_order_dir
;
sort_order_dir
=
params
.
sort_order_dir
;
}
}
...
@@ -1097,6 +1119,7 @@ function display_products(params) {
...
@@ -1097,6 +1119,7 @@ function display_products(params) {
// On inputs change
// On inputs change
$
(
'#products_table'
).
on
(
'change'
,
'tbody td .product_qty_input'
,
function
()
{
$
(
'#products_table'
).
on
(
'change'
,
'tbody td .product_qty_input'
,
function
()
{
let
val
=
(
$
(
this
).
val
()
==
''
)
?
0
:
$
(
this
).
val
();
let
val
=
(
$
(
this
).
val
()
==
''
)
?
0
:
$
(
this
).
val
();
val
=
parseFloat
(
val
);
val
=
parseFloat
(
val
);
// If value is a number
// If value is a number
...
@@ -1108,11 +1131,13 @@ function display_products(params) {
...
@@ -1108,11 +1131,13 @@ function display_products(params) {
// Save value
// Save value
save_product_supplier_qty
(
prod_id
,
supplier_id
,
val
);
save_product_supplier_qty
(
prod_id
,
supplier_id
,
val
);
// Update row
// Update row
const
product
=
products
.
find
(
p
=>
p
.
id
==
prod_id
);
const
product
=
products
.
find
(
p
=>
p
.
id
==
prod_id
);
const
new_row_data
=
prepare_datatable_data
([
product
.
id
])[
0
];
const
new_row_data
=
prepare_datatable_data
([
product
.
id
])[
0
];
products_table
.
row
(
$
(
this
).
closest
(
'tr'
)).
data
(
new_row_data
).
draw
();
products_table
.
row
(
$
(
this
).
closest
(
'tr'
)).
data
(
new_row_data
)
.
draw
();
update_cdb_order
();
update_cdb_order
();
}
else
{
}
else
{
...
@@ -1147,9 +1172,10 @@ function display_products(params) {
...
@@ -1147,9 +1172,10 @@ function display_products(params) {
false
false
);
);
// Find existing price in another supplierinfo
// Find existing price in another supplierinfo
let
default_price
=
null
;
let
default_price
=
null
;
let
default_package_qty
=
1
;
// Default package qty is 1
let
default_package_qty
=
1
;
// Default package qty is 1
for
(
let
psi
of
product
.
suppliersinfo
)
{
for
(
let
psi
of
product
.
suppliersinfo
)
{
if
(
'price'
in
psi
&&
psi
.
price
!==
null
)
{
if
(
'price'
in
psi
&&
psi
.
price
!==
null
)
{
default_price
=
psi
.
price
;
default_price
=
psi
.
price
;
...
@@ -1161,13 +1187,13 @@ function display_products(params) {
...
@@ -1161,13 +1187,13 @@ function display_products(params) {
}
}
// Set default value for price & package qty for new supplierinfo
// Set default value for price & package qty for new supplierinfo
$
(
".new_product_supplier_package_pty"
).
val
(
default_package_qty
);
$
(
".new_product_supplier_package_pty"
).
val
(
default_package_qty
);
$
(
".new_product_supplier_price"
).
val
(
default_price
);
// Default price is existing price for other supplier, or none if no other
$
(
".new_product_supplier_price"
).
val
(
default_price
);
// Default price is existing price for other supplier, or none if no other
new_product_supplier_association
=
{
new_product_supplier_association
=
{
package_qty
:
default_package_qty
,
package_qty
:
default_package_qty
,
price
:
default_price
price
:
default_price
}
}
;
$
(
'.new_product_supplier_price'
).
on
(
'input'
,
function
()
{
$
(
'.new_product_supplier_price'
).
on
(
'input'
,
function
()
{
new_product_supplier_association
.
price
=
$
(
this
).
val
();
new_product_supplier_association
.
price
=
$
(
this
).
val
();
});
});
...
@@ -1201,6 +1227,7 @@ function display_products(params) {
...
@@ -1201,6 +1227,7 @@ function display_products(params) {
// Save / unsave selected row
// Save / unsave selected row
const
p_id
=
products_table
.
row
(
$
(
this
).
closest
(
'tr'
)).
data
().
id
;
const
p_id
=
products_table
.
row
(
$
(
this
).
closest
(
'tr'
)).
data
().
id
;
if
(
this
.
checked
)
{
if
(
this
.
checked
)
{
selected_rows
.
push
(
p_id
);
selected_rows
.
push
(
p_id
);
}
else
{
}
else
{
...
@@ -1290,7 +1317,9 @@ function update_main_screen(params) {
...
@@ -1290,7 +1317,9 @@ function update_main_screen(params) {
if
(
order_doc
.
date_planned
!==
null
)
{
if
(
order_doc
.
date_planned
!==
null
)
{
// Switch format from yy-mm-dd hh:mm:ss to readable dd/mm/yy
// Switch format from yy-mm-dd hh:mm:ss to readable dd/mm/yy
let
date_to_format
=
order_doc
.
date_planned
.
split
(
' '
)[
0
];
let
date_to_format
=
order_doc
.
date_planned
.
split
(
' '
)[
0
];
let
readable_date
=
date_to_format
.
split
(
'-'
).
reverse
().
join
(
'/'
);
let
readable_date
=
date_to_format
.
split
(
'-'
).
reverse
()
.
join
(
'/'
);
$
(
"#date_planned_input"
).
val
(
readable_date
);
$
(
"#date_planned_input"
).
val
(
readable_date
);
}
else
{
}
else
{
$
(
"#date_planned_input"
).
val
(
''
);
$
(
"#date_planned_input"
).
val
(
''
);
...
@@ -1351,11 +1380,11 @@ function switch_screen(direction = 'main_screen', from = 'main_screen') {
...
@@ -1351,11 +1380,11 @@ function switch_screen(direction = 'main_screen', from = 'main_screen') {
let
oldBox
=
null
;
let
oldBox
=
null
;
let
newBox
=
null
;
let
newBox
=
null
;
let
outerWidth
=
null
;
let
outerWidth
=
null
;
if
(
direction
===
'main_screen'
)
{
if
(
direction
===
'main_screen'
)
{
oldBox
=
$
(
"#select_order_content"
);
oldBox
=
$
(
"#select_order_content"
);
newBox
=
$
(
"#main_content"
);
newBox
=
$
(
"#main_content"
);
outerWidth
=
oldBox
.
outerWidth
(
true
);
outerWidth
=
oldBox
.
outerWidth
(
true
);
}
else
{
}
else
{
if
(
from
===
'orders_created'
)
{
if
(
from
===
'orders_created'
)
{
...
@@ -1363,12 +1392,12 @@ function switch_screen(direction = 'main_screen', from = 'main_screen') {
...
@@ -1363,12 +1392,12 @@ function switch_screen(direction = 'main_screen', from = 'main_screen') {
}
else
{
}
else
{
oldBox
=
$
(
"#main_content"
);
oldBox
=
$
(
"#main_content"
);
}
}
newBox
=
$
(
"#select_order_content"
);
newBox
=
$
(
"#select_order_content"
);
outerWidth
=
-
oldBox
.
outerWidth
(
true
);
outerWidth
=
-
oldBox
.
outerWidth
(
true
);
}
}
// Display the new box and place it on the right of the screen
// Display the new box and place it on the right of the screen
newBox
.
css
({
"left"
:
outerWidth
+
"px"
,
"right"
:
-
outerWidth
+
"px"
,
"display"
:
""
});
newBox
.
css
({
"left"
:
outerWidth
+
"px"
,
"right"
:
-
outerWidth
+
"px"
,
"display"
:
""
});
// Make the old content slide to the left
// Make the old content slide to the left
...
@@ -1429,6 +1458,7 @@ $(document).ready(function() {
...
@@ -1429,6 +1458,7 @@ $(document).ready(function() {
$
(
"#coverage_form"
).
on
(
"submit"
,
function
(
e
)
{
$
(
"#coverage_form"
).
on
(
"submit"
,
function
(
e
)
{
e
.
preventDefault
();
e
.
preventDefault
();
let
val
=
$
(
"#coverage_days_input"
).
val
();
let
val
=
$
(
"#coverage_days_input"
).
val
();
val
=
parseInt
(
val
);
val
=
parseInt
(
val
);
if
(
!
isNaN
(
val
))
{
if
(
!
isNaN
(
val
))
{
...
@@ -1438,7 +1468,7 @@ $(document).ready(function() {
...
@@ -1438,7 +1468,7 @@ $(document).ready(function() {
update_main_screen
();
update_main_screen
();
}
else
{
}
else
{
$
(
"#coverage_days_input"
).
val
(
order_doc
.
coverage_days
);
$
(
"#coverage_days_input"
).
val
(
order_doc
.
coverage_days
);
alert
(
`Valeur non valide pour le nombre de jours de couverture !`
)
alert
(
`Valeur non valide pour le nombre de jours de couverture !`
)
;
}
}
});
});
...
@@ -1462,8 +1492,9 @@ $(document).ready(function() {
...
@@ -1462,8 +1492,9 @@ $(document).ready(function() {
$
(
'#create_orders'
).
on
(
'click'
,
function
()
{
$
(
'#create_orders'
).
on
(
'click'
,
function
()
{
if
(
order_doc
.
date_planned
===
null
)
{
if
(
order_doc
.
date_planned
===
null
)
{
alert
(
"Veuillez rentrer une date de livraison prévue."
)
alert
(
"Veuillez rentrer une date de livraison prévue."
);
return
-
1
return
-
1
;
}
}
let
modal_create_order
=
$
(
'#templates #modal_create_order'
);
let
modal_create_order
=
$
(
'#templates #modal_create_order'
);
...
@@ -1476,6 +1507,8 @@ $(document).ready(function() {
...
@@ -1476,6 +1507,8 @@ $(document).ready(function() {
'Valider'
,
'Valider'
,
false
false
);
);
return
0
;
});
});
$
.
datepicker
.
regional
[
'fr'
]
=
{
$
.
datepicker
.
regional
[
'fr'
]
=
{
...
@@ -1502,12 +1535,13 @@ $(document).ready(function() {
...
@@ -1502,12 +1535,13 @@ $(document).ready(function() {
'Ve'
,
'Ve'
,
'Sa'
'Sa'
],
],
dateFormat
:
date_format
,
dateFormat
:
date_format
};
};
$
.
datepicker
.
setDefaults
(
$
.
datepicker
.
regional
[
'fr'
]);
$
.
datepicker
.
setDefaults
(
$
.
datepicker
.
regional
[
'fr'
]);
const
tomorrow
=
new
Date
()
const
tomorrow
=
new
Date
();
tomorrow
.
setDate
(
tomorrow
.
getDate
()
+
1
)
tomorrow
.
setDate
(
tomorrow
.
getDate
()
+
1
);
$
(
"#date_planned_input"
)
$
(
"#date_planned_input"
)
.
datepicker
({
.
datepicker
({
...
@@ -1519,9 +1553,12 @@ $(document).ready(function() {
...
@@ -1519,9 +1553,12 @@ $(document).ready(function() {
// When date input changes, try to read date
// When date input changes, try to read date
$
.
datepicker
.
parseDate
(
date_format
,
$
(
this
).
val
());
$
.
datepicker
.
parseDate
(
date_format
,
$
(
this
).
val
());
// No exception raised: date is valid.
// No exception raised: date is valid.
// Change format from readable (dd/mm/yy) to ISO (yy-mm-dd)
// Change format from readable (dd/mm/yy) to ISO (yy-mm-dd)
let
formatted_date
=
$
(
this
).
val
().
split
(
'/'
).
reverse
().
join
(
'-'
)
+
' 00:00:00'
;
let
formatted_date
=
$
(
this
).
val
()
.
split
(
'/'
)
.
reverse
()
.
join
(
'-'
)
+
' 00:00:00'
;
// Update doc if changed
// Update doc if changed
if
(
formatted_date
!==
order_doc
.
date_planned
)
{
if
(
formatted_date
!==
order_doc
.
date_planned
)
{
...
@@ -1564,7 +1601,7 @@ $(document).ready(function() {
...
@@ -1564,7 +1601,7 @@ $(document).ready(function() {
source
:
suppliers_list
.
map
(
a
=>
a
.
display_name
)
source
:
suppliers_list
.
map
(
a
=>
a
.
display_name
)
});
});
},
},
error
:
function
(
data
)
{
error
:
function
(
data
)
{
err
=
{
msg
:
"erreur serveur lors de la récupération des fournisseurs"
,
ctx
:
'get_suppliers'
};
err
=
{
msg
:
"erreur serveur lors de la récupération des fournisseurs"
,
ctx
:
'get_suppliers'
};
...
@@ -1580,25 +1617,27 @@ $(document).ready(function() {
...
@@ -1580,25 +1617,27 @@ $(document).ready(function() {
//Get products
//Get products
var
accentMap
=
{
var
accentMap
=
{
"á"
:
"a"
,
"á"
:
"a"
,
"à"
:
"a"
,
"à"
:
"a"
,
"â"
:
"a"
,
"â"
:
"a"
,
"é"
:
"e"
,
"é"
:
"e"
,
"è"
:
"e"
,
"è"
:
"e"
,
"ê"
:
"e"
,
"ê"
:
"e"
,
"ë"
:
"e"
,
"ë"
:
"e"
,
"ç"
:
"c"
,
"ç"
:
"c"
,
"ù"
:
"u"
,
"ù"
:
"u"
,
"ü"
:
"u"
,
"ü"
:
"u"
,
"ö"
:
"o"
"ö"
:
"o"
};
};
var
normalize
=
function
(
term
)
{
var
normalize
=
function
(
term
)
{
var
ret
=
""
;
var
ret
=
""
;
for
(
var
i
=
0
;
i
<
term
.
length
;
i
++
)
{
ret
+=
accentMap
[
term
.
charAt
(
i
)
]
||
term
.
charAt
(
i
);
for
(
var
i
=
0
;
i
<
term
.
length
;
i
++
)
{
}
ret
+=
accentMap
[
term
.
charAt
(
i
)
]
||
term
.
charAt
(
i
);
return
ret
;
}
return
ret
;
};
};
$
.
ajax
({
$
.
ajax
({
...
@@ -1612,12 +1651,14 @@ $(document).ready(function() {
...
@@ -1612,12 +1651,14 @@ $(document).ready(function() {
// Set up autocomplete on product input
// Set up autocomplete on product input
$
(
"#product_input"
).
autocomplete
({
$
(
"#product_input"
).
autocomplete
({
source
:
function
(
request
,
response
)
{
source
:
function
(
request
,
response
)
{
var
matcher
=
new
RegExp
(
$
.
ui
.
autocomplete
.
escapeRegex
(
request
.
term
),
"i"
);
var
matcher
=
new
RegExp
(
$
.
ui
.
autocomplete
.
escapeRegex
(
request
.
term
),
"i"
);
response
(
$
.
grep
(
products_list
.
map
(
a
=>
a
.
display_name
),
function
(
value
)
{
value
=
value
.
label
||
value
.
value
||
value
;
response
(
$
.
grep
(
products_list
.
map
(
a
=>
a
.
display_name
),
function
(
value
)
{
return
matcher
.
test
(
value
)
||
matcher
.
test
(
normalize
(
value
)
);
value
=
value
.
label
||
value
.
value
||
value
;
})
);
return
matcher
.
test
(
value
)
||
matcher
.
test
(
normalize
(
value
));
}));
},
},
position
:
{
collision
:
"flip"
}
position
:
{
collision
:
"flip"
}
});
});
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment