add facturation date input when trying to facture a quote in devis list

This commit is contained in:
Tiavina 2025-01-13 16:27:26 +03:00
parent e6b447a086
commit 52bb4ee519
27 changed files with 127 additions and 67 deletions

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

View File

@ -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;

View File

@ -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,

View File

@ -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();

View 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"));
});
});

View File

@ -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"});

View File

@ -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>