add facturation date input when trying to facture a quote in devis list
This commit is contained in:
parent
e6b447a086
commit
52bb4ee519
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1768,9 +1768,10 @@ class PageController extends Controller {
|
||||
* @NoAdminRequired
|
||||
* @NoCSRFRequired
|
||||
* @param array $devisToFacture
|
||||
* @param string $paymentDate
|
||||
*/
|
||||
public function exportDevisToFacture($devisToFacture) {
|
||||
$factureIdsGenerated = $this->myDb->insertFactureForeEachDevisId($this->idNextcloud,$devisToFacture);
|
||||
public function exportDevisToFacture($devisToFacture,$paymentDate) {
|
||||
$factureIdsGenerated = $this->myDb->insertFactureForeEachDevisId($this->idNextcloud,$devisToFacture,$paymentDate);
|
||||
$this->invoicePdfService->generateFacturePdfByFactureIds($factureIdsGenerated,$this->idNextcloud);
|
||||
$this->refreshFEC();
|
||||
return true;
|
||||
|
||||
@ -1139,14 +1139,14 @@ class Bdd {
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function insertFactureForeEachDevisId($idNextCloud,$devisIdArray){
|
||||
public function insertFactureForeEachDevisId($idNextCloud,$devisIdArray,$paymentDate = null){
|
||||
$devisIdarrayToString = implode(',', $devisIdArray);
|
||||
$this->logger->debug($devisIdarrayToString);
|
||||
$mentionToNotInclude = 'facturé';
|
||||
$devisIdListFiltered = $this->getDevisIdListFilteredByMentionAndDevisListId($mentionToNotInclude,$devisIdArray);
|
||||
$factureIdsGenerated = [];
|
||||
foreach($devisIdListFiltered as $devis){
|
||||
$factureId = $this->insertFactureByDevisId($idNextCloud,$devis['id'],$devis['devis_date']);
|
||||
$factureId = $this->insertFactureByDevisId($idNextCloud,$devis['id'],$devis['devis_date'],$paymentDate);
|
||||
$factureIdsGenerated[] = $factureId;
|
||||
}
|
||||
return $factureIdsGenerated;
|
||||
@ -1155,16 +1155,21 @@ class Bdd {
|
||||
/**
|
||||
* Insert invoice with a devis
|
||||
*/
|
||||
public function insertFactureByDevisId($idNextcloud,$devisId,$devisDate = null){
|
||||
|
||||
public function insertFactureByDevisId($idNextcloud,$devisId,$devisDate = null,$paymentDate = null){
|
||||
if($paymentDate == null || $paymentDate == ""){
|
||||
$datetimeNow = new Datetime();
|
||||
$paymentDate = DateHelpers::GetLastDayOfTheMonthOfADate($datetimeNow);
|
||||
$paymentDate = $paymentDate->format('Y-m-d');
|
||||
}
|
||||
else{
|
||||
$paymentDate = Datetime::createFromFormat('Y-m-d',$paymentDate);
|
||||
$paymentDate = $paymentDate->format('Y-m-d');
|
||||
}
|
||||
$devisDatetime = new Datetime();
|
||||
if($devisDate != null){
|
||||
$devisDatetime = new Datetime($devisDate);
|
||||
}
|
||||
|
||||
$factureDate = $devisDatetime->format('Y-m-d');
|
||||
$lastDay = DateHelpers::GetLastDayOfTheMonthOfADate($devisDatetime);
|
||||
$lastDay = $lastDay->format('Y-m-d');
|
||||
$factureNumber = $this->getFactureNumberByDate($devisDatetime);
|
||||
$fullFactureNumber = DateHelpers::GetFullFactureOrDevisNumberByDate($devisDatetime,$factureNumber,"FAC");
|
||||
$last = 0;
|
||||
@ -1174,7 +1179,7 @@ class Bdd {
|
||||
$factureDate ,
|
||||
$idNextcloud,
|
||||
$fullFactureNumber,
|
||||
$lastDay,
|
||||
$paymentDate,
|
||||
"Comptant",
|
||||
$devisId,
|
||||
$last+1,
|
||||
|
||||
@ -6,6 +6,7 @@ import DataTable from "datatables.net";
|
||||
import { globalConfiguration, optionDatatable } from "./modules/mainFunction.mjs";
|
||||
import { Devis } from "./objects/devis.mjs";
|
||||
import "./listener/main_listener";
|
||||
import "./listener/devisListener";
|
||||
|
||||
window.addEventListener("DOMContentLoaded", function () {
|
||||
globalConfiguration();
|
||||
|
||||
70
gestion/src/js/listener/devisListener.js
Normal file
70
gestion/src/js/listener/devisListener.js
Normal file
@ -0,0 +1,70 @@
|
||||
import {showError, showSuccess } from "@nextcloud/dialogs";
|
||||
import {baseUrl} from "../modules/mainFunction.mjs";
|
||||
import { Devis } from "../objects/devis.mjs";
|
||||
import DataTable from "datatables.net";
|
||||
|
||||
window.addEventListener("DOMContentLoaded", function () {
|
||||
|
||||
const today = new Date();
|
||||
const lastDayOfMonth = new Date(today.getFullYear(), today.getMonth() + 1, 0);
|
||||
const formattedDate = lastDayOfMonth.toISOString().split('T')[0];
|
||||
const dateInput = document.getElementById('facturationDate');
|
||||
dateInput.value = formattedDate;
|
||||
});
|
||||
|
||||
$('body').on('click', '#showDevisFacturationModal', function () {
|
||||
var oTable = $('.tabledt').dataTable();
|
||||
var rowcollection = oTable.$(".devisToFacture:checked", {"page": "all"});
|
||||
let devisToFacture = [];
|
||||
rowcollection.each(function(index,elem){
|
||||
var checkbox_value = $(elem).val();
|
||||
devisToFacture.push(checkbox_value);
|
||||
});
|
||||
|
||||
if(devisToFacture.length == 0){
|
||||
showError(t('gestion', "Veuillez choisir une ligne de devis à facturer"));
|
||||
return;
|
||||
}
|
||||
$('#devisFacturationModal').show();
|
||||
});
|
||||
|
||||
$('body').on('click', '#closeDevisModal', function () {
|
||||
$('#devisFacturationModal').hide();
|
||||
});
|
||||
|
||||
$('body').on('click', '#invoiceQuote', function () {
|
||||
var dateValue = document.getElementById("facturationDate").value;
|
||||
var oTable = $('.tabledt').dataTable();
|
||||
var rowcollection = oTable.$(".devisToFacture:checked", {"page": "all"});
|
||||
let devisToFacture = [];
|
||||
rowcollection.each(function(index,elem){
|
||||
var checkbox_value = $(elem).val();
|
||||
devisToFacture.push(checkbox_value);
|
||||
});
|
||||
|
||||
if(devisToFacture.length == 0){
|
||||
$('#devisFacturationModal').hide();
|
||||
showError(t('gestion', "Veuillez choisir une ligne de devis à facturer"));
|
||||
return;
|
||||
}
|
||||
|
||||
let devisToFacturePayload = {
|
||||
devisToFacture: devisToFacture,
|
||||
paymentDate: dateValue
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
url: baseUrl + '/exportDevisToFacture',
|
||||
type: 'POST',
|
||||
contentType: 'application/json',
|
||||
data: JSON.stringify(devisToFacturePayload)
|
||||
}).done(function (response) {
|
||||
$('#devisFacturationModal').hide();
|
||||
let datatable = new DataTable('.tabledt');
|
||||
Devis.loadDevisDT(datatable);
|
||||
showSuccess(t('gestion', "Devis facturés avec succès"));
|
||||
}).fail(function (response, code) {
|
||||
$('#devisFacturationModal').hide();
|
||||
showError(t('gestion', "Erreur dans la facturation du devis"));
|
||||
});
|
||||
});
|
||||
@ -404,41 +404,6 @@ $('body').on('click', '#about', function () {
|
||||
modal.style.display = "block";
|
||||
});
|
||||
|
||||
$('body').on('click', '#exportDevisToFacture', function () {
|
||||
var oTable = $('.tabledt').dataTable();
|
||||
var rowcollection = oTable.$(".devisToFacture:checked", {"page": "all"});
|
||||
let devisToFacture = [];
|
||||
rowcollection.each(function(index,elem){
|
||||
var checkbox_value = $(elem).val();
|
||||
devisToFacture.push(checkbox_value);
|
||||
console.log("VALUE",checkbox_value);
|
||||
});
|
||||
|
||||
if(devisToFacture.length == 0){
|
||||
showError(t('gestion', "Veuillez choisir une ligne de devis à facturer"));
|
||||
return;
|
||||
}
|
||||
|
||||
let devisToFacturePayload = {
|
||||
devisToFacture: devisToFacture
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
url: baseUrl + '/exportDevisToFacture',
|
||||
type: 'POST',
|
||||
contentType: 'application/json',
|
||||
data: JSON.stringify(devisToFacturePayload)
|
||||
}).done(function (response) {
|
||||
let datatable = new DataTable('.tabledt');
|
||||
Devis.loadDevisDT(datatable);
|
||||
showSuccess(t('gestion', "Devis facturés avec succès"));
|
||||
}).fail(function (response, code) {
|
||||
showError(t('gestion', "Erreur dans la facturation du devis"));
|
||||
});
|
||||
|
||||
|
||||
});
|
||||
|
||||
$('body').on('click', '#exportThanatoData', function () {
|
||||
var oTable = $('.tabledt').dataTable();
|
||||
var rowcollection = oTable.$(".thanatoToExport:checked", {"page": "all"});
|
||||
|
||||
@ -14,7 +14,9 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="d-flex justify-content-end">
|
||||
<button class="btn btn-secondary" id="exportDevisToFacture">Facturer</button>
|
||||
<button id="showDevisFacturationModal" class="btn btn-secondary" data-toggle="modal" data-target="#devisFacturationModal">
|
||||
Facturer
|
||||
</button>
|
||||
<button class="btn btn-secondary" id="apercusDevis">Voir les aperçus</button>
|
||||
</div>
|
||||
<!-- <div class="d-flex justify-content-between">
|
||||
@ -47,4 +49,20 @@
|
||||
<tbody>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="modal" id="devisFacturationModal" tabindex="-1">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title" id="exampleModalLabel">Choisir la date de facturation souhaitée</h5>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<input type="date" id="facturationDate">
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button id="closeDevisModal" type="button" class="btn btn-secondary">Annuler</button>
|
||||
<button id="invoiceQuote" type="button" class="btn btn-primary">Facturer</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user