Ajout gestion complement avant saisie de contrat

Degug input float
This commit is contained in:
Adrien RENARD 2024-01-29 16:07:32 +01:00
parent a4621b3a6d
commit 6e779160ea
7 changed files with 80 additions and 9 deletions

View File

@ -144,6 +144,7 @@ define('CONTRATS_TABLE_STRUCT', array(
"lieu_depot" => array( "type" => "int", "min" => 1, "max" => NULL, "default" => NULL, "force_default_under_min" => true ),
"nb_cheque" => array( "type" => "int", "min" => 1, "max" => 99, "default" => 0, "force_default_under_min" => true ),
"np_paniers_distrib_avt_saisie" => array( "type" => "int", "min" => 1, "max" => 99, "default" => 0, "force_default_under_min" => true ),
"complement_avt_saisie" => array( "type" => "float", "min" => 0, "max" => 999.99, "default" => 0, "force_default_under_min" => true ),
"force_eligible" => array( "type" => "bool", "default" => 0 ),
"ignore_warning" => array( "type" => "bool", "default" => 0 ),
"archive" => array( "type" => "bool", "default" => 0 ),
@ -189,6 +190,7 @@ function getContratsTableSelectBaseSQL() {
.LIEUX_TABLE.".`nom` as 'lieu_depot_nom',"
.CONTRATS_TABLE.".`nb_cheque`,"
.CONTRATS_TABLE.".`np_paniers_distrib_avt_saisie`,"
.CONTRATS_TABLE.".`complement_avt_saisie`,"
.CONTRATS_TABLE.".`force_eligible`,"
.CONTRATS_TABLE.".`ignore_warning`,"
.CONTRATS_TABLE.".`archive`,"

View File

@ -121,6 +121,7 @@ CREATE TABLE `contrats` (
`lieu_depot` smallint(5) UNSIGNED NOT NULL,
`nb_cheque` int(2) UNSIGNED NOT NULL DEFAULT '0',
`np_paniers_distrib_avt_saisie` int(2) UNSIGNED NOT NULL DEFAULT '0',
`complement_avt_saisie` float(5,2) NOT NULL DEFAULT '0',
`force_eligible` tinyint(1) UNSIGNED NOT NULL DEFAULT '0',
`ignore_warning` tinyint(1) UNSIGNED NOT NULL DEFAULT '0',
`force_not_archive` tinyint(1) UNSIGNED NOT NULL DEFAULT '0',
@ -291,10 +292,10 @@ CREATE VIEW `livraisons_nb_paniers` AS
GROUP BY `livraisons_paniers`.`livraison`;
-- --------------------------------------------------------
-- STRUCTURE DE LA VIEW `complements_contrats_status`
-- STRUCTURE DE LA VIEW `complements_contrats_paniers_status`
-- --------------------------------------------------------
CREATE VIEW `complements_contrats_status` AS
CREATE VIEW `complements_contrats_paniers_status` AS
SELECT
`contrats`.`client`,
`contrat`,
@ -305,6 +306,29 @@ CREATE VIEW `complements_contrats_status` AS
LEFT JOIN `contrats` ON `livraisons_paniers`.`contrat` = `contrats`.`ref`
GROUP BY `contrat`;
-- --------------------------------------------------------
-- STRUCTURE DE LA VIEW `complements_contrats_paniers_status`
-- --------------------------------------------------------
CREATE VIEW `complements_contrats_status` AS
SELECT
`contrats`.`client`,
`contrats`.ref as 'contrat',
CASE WHEN ISNULL(`complements_contrats_paniers_status`.`complements`)
THEN `contrats`.`complement_avt_saisie`
ELSE `contrats`.`complement_avt_saisie` + `complements_contrats_paniers_status`.`complements`
END as 'complements',
CASE WHEN ISNULL(`complements_contrats_paniers_status`.`complements_regles`)
THEN 0.0
ELSE `complements_contrats_paniers_status`.`complements_regles`
END as 'complements_regles',
CASE WHEN ISNULL(`complements_contrats_paniers_status`.`complements`)
THEN `contrats`.`complement_avt_saisie`
ELSE `contrats`.`complement_avt_saisie` + `complements_contrats_paniers_status`.`complements` - `complements_contrats_paniers_status`.`complements_regles`
END as 'complements_dus'
FROM `contrats`
LEFT JOIN `complements_contrats_paniers_status` ON `contrats`.`ref` = `complements_contrats_paniers_status`.`contrat`;
-- --------------------------------------------------------
-- STRUCTURE DE LA VIEW `complements_clients_status`
-- --------------------------------------------------------

View File

@ -236,6 +236,9 @@ function modalFormContrat_init(modal) {
// NB PANIER AVANT SAISIE
initIntInput(modal.find("input[name=np_paniers_distrib_avt_saisie]"));
// NB PANIER AVANT SAISIE
initFloatInput(modal.find("input[name=complement_avt_saisie]"));
modalFormContrat_clear(modal);
}
@ -266,6 +269,7 @@ function modalFormContrat_loadDatas(modal,id) {
modal.find("input[name=nb_cheque]").val(datas.nb_cheque);
modal.find("input[name=np_paniers_distrib_avt_saisie]").val(datas.np_paniers_distrib_avt_saisie);
modal.find("input[name=complement_avt_saisie]").val(datas.complement_avt_saisie);
modal.find("input[type=checkbox][name=force_eligible]").prop("checked",datas.force_eligible>0);
modal.find("input[type=checkbox][name=ignore_warning]").prop("checked",datas.ignore_warning>0);
@ -305,6 +309,7 @@ function modalFormContrat_clear(modal) {
modal.find("input[name=nb_cheque]").val("");
modal.find("input[name=np_paniers_distrib_avt_saisie]").val("");
modal.find("input[name=complement_avt_saisie]").val("");
modal.find("input[type=checkbox][name=force_eligible]").prop("checked",false);
modal.find("input[type=checkbox][name=ignore_warning]").prop("checked",false);
}
@ -322,6 +327,7 @@ function modalFormContrat_getDatas(modal) {
'lieu_depot' : parseInt( modal.find("select[name=lieu_depot]").val() ),
'nb_cheque' : parseInt( modal.find("input[name=nb_cheque]").val() ),
'np_paniers_distrib_avt_saisie' : modal.find("input[name=np_paniers_distrib_avt_saisie]").val(),
'complement_avt_saisie' : parseFloat( modal.find("input[name=complement_avt_saisie]").val() ),
'force_eligible' : modal.find("input[type=checkbox][name=force_eligible]").prop("checked") ? 1 : 0,
'ignore_warning' : modal.find("input[type=checkbox][name=ignore_warning]").prop("checked") ? 1 : 0
};

View File

@ -738,7 +738,10 @@ function initIntInputWithLimits(elem, min, max) {
}
function initFloatInput(elem) {
elem.unbind('keypress').unbind('keyup').keypress( function(event) {
if(elem.attr('type') == "number") elem.attr('lang', 'en').unbind('keypress').keypress( function(event) {
if(event.keyCode==13) setTimeout(function() { elem.blur(); },50);
})
else elem.unbind('keypress').unbind('keyup').keypress( function(event) {
keys = [48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 46, 44];
if(event.keyCode==13) setTimeout(function() { elem.blur(); },50);
if(jQuery.inArray(event.keyCode,keys)==-1) event.preventDefault();
@ -752,6 +755,35 @@ function initFloatInput(elem) {
});
}
function initFloatInputWithLimits(elem, min, max) {
if(elem.attr('type') == "number") elem.attr('lang', 'en').unbind('keypress').keypress( function(event) {
if(event.keyCode==13) {
event.preventDefault();
setTimeout(function() { elem.blur(); },50);
}
})
else elem.unbind('keypress').unbind('keyup').keypress( function(event) {
keys = [48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 46, 44];
if(event.keyCode==13) {
event.preventDefault();
setTimeout(function() { elem.blur(); },50);
}
if(jQuery.inArray(event.keyCode,keys)==-1) event.preventDefault();
if((event.keyCode==46 || event.keyCode==44) && $(this).val().indexOf('.')>0) event.preventDefault();
}).keyup( function(event) {
if(event.keyCode==188 && $(this).val().indexOf('.')==-1) {
var pos = $(this)[0].selectionStart;
$(this).val( $(this).val().replace(",",".") );
$(this)[0].setSelectionRange(pos,pos);
}
});
elem.blur(function(e) {
if(isDefined(min) && parseFloat($(this).val())<min) $(this).val(min);
else if(isDefined(max) && parseFloat($(this).val())>max) $(this).val(max);
});
}
function initDateInput(elem) {
elem.unbind('keypress').unbind('keyup').keypress( function(event) {
if(event.keyCode==13) {

View File

@ -308,7 +308,7 @@ function modalFormLegume_addTarif(modal, datas) {
modal.find("div.tarifs").append(iptGrp);
// INIT
initFloatInput( iptGrp.find("input[name=prix]") );
initFloatInputWithLimits( iptGrp.find("input[name=prix]"), 0.0, 999.99 );
initDateInput( iptGrp.find("input[name=date]") );
iptGrp.find("button.btnDel").click(function(e) {

View File

@ -59,11 +59,18 @@
</div>
<div class="form-group">
<label>nb. de chèque(s) :</label>
<input type="text" class="form-control" name="nb_cheque" placeholder="nb. de chèque(s)">
<input type="number" class="form-control" name="nb_cheque" placeholder="nb. de chèque(s)">
</div>
<div class="form-group">
<label>nb. de panier(s) distribué(s) avant la saisie du contrat :</label>
<input type="text" class="form-control" name="np_paniers_distrib_avt_saisie" placeholder="nb. de panier(s)">
<input type="number" class="form-control" name="np_paniers_distrib_avt_saisie" placeholder="nb. de panier(s)">
</div>
<div class="form-group">
<label>complément avant la saisie du contrat :</label>
<div class="input-group">
<input type="number" class="form-control" name="complement_avt_saisie" placeholder="complément" lang="en" step="0.1">
<span class="input-group-addon">€</span>
</div>
</div>
<div class="checkbox">
<label>

View File

@ -18,7 +18,7 @@
{/foreach}
</select>
<span class="input-group-addon">prix :</span>
<input type="number" class="form-control" name="prix" placeholder="prix" ref="new">
<input type="number" class="form-control" name="prix" placeholder="prix" ref="new" step="0.1" min="0.0">
<span class="input-group-addon">unité :</span>
<select class="form-control" name="unite">
<option value="kg" selected>kg</option>