Procházet zdrojové kódy

Documents : export CSV Evoliz #479

refactoring
Guillaume Bourgeois před 2 roky
rodič
revize
963261e20a
4 změnil soubory, kde provedl 133 přidání a 4 odebrání
  1. +111
    -0
      backend/controllers/DocumentController.php
  2. +1
    -1
      common/helpers/CSV.php
  3. +21
    -2
      common/helpers/Price.php
  4. +0
    -1
      common/models/Document.php

+ 111
- 0
backend/controllers/DocumentController.php Zobrazit soubor

@@ -179,6 +179,117 @@ class DocumentController extends BackendController
$this->redirect([$this->getControllerUrl() . '/index']);
}

public function actionExportCsvEvoliz($id)
{
$datas = [];
$document = $this->findModel($id);

// données
$datas[] = [
'N° facture externe *',
'Date facture *',
'Client',
'Code client *',
'Total TVA',
'Total HT',
'Total TTC',
'Total réglé',
'Etat',
'Date Etat',
'Date de création',
'Objet',
'Date d\'échéance',
'Date d\'exécution',
'Taux de pénalité',
'Frais de recouvrement',
'Taux d\'escompte',
'Conditions de règlement *',
'Mode de paiement',
'Remise globale',
'Acompte',
'Nombre de relance',
'Commentaires',
'N° facture',
'Annulé',
'Catalogue',
'Réf.',
'Désignation *',
'Qté *',
'Unité',
'PU HT *',
'Remise',
'TVA',
'Total TVA',
'Total HT',
'Créateur',
];

foreach($document->getProductsOrders() as $productOrderArray) {
foreach($productOrderArray as $productOrder) {

$price = $productOrder->getPrice() ;
if($document->isInvoicePrice() && $productOrder->getInvoicePrice()) {
$price = $productOrder->getInvoicePrice() ;
}

$datas[] = [
$document->reference, // N° facture externe *
date('d/m/Y', strtotime($document->date)), // Date facture *
'', // Client
'C1', // Code client *
'', // Total TVA
'', // Total HT
'', // Total TTC
'', // Total réglé
'', // Etat
'', // Date Etat
'', // Date de création
$document->name, // Objet
'', // Date d'échéance
'', // Date d'exécution
'', // Taux de pénalité
'', // Frais de recouvrement
'', // Taux d\'escompte
'A réception', // Conditions de règlement *
'', // Mode de paiement
'', // Remise globale
'', // Acompte
'', // Nombre de relance
'', // Commentaires
'', // N° facture
'', // Annulé
'Non', // Catalogue
'', // Réf.
$productOrder->product->name, // Désignation *
$productOrder->quantity, // Qté *
'', // Product::strUnit($productOrder->unit, 'wording'), // Unité
$price, // PU HT *
'', // Remise
$productOrder->taxRate->value * 100, // TVA
'', // Total TVA
'', // Total HT
'', // Créateur
];
}
}

// nom fichier
$reference = $document->id;
if($document->reference && strlen($document->reference)) {
$reference = $document->reference;
}

// status
$status = '';
if($document->isStatusDraft()) {
$status = 'brouillon_';
}

CSV::downloadSendHeaders(strtolower($this->getDocumentType()).'_' . $status . $reference . '.csv');
echo CSV::array2csv($datas);
die();
}

public function actionDownload($id)
{
$document = $this->findModel($id);

+ 1
- 1
common/helpers/CSV.php Zobrazit soubor

@@ -52,7 +52,7 @@ class CSV
// clés
//fputcsv($df, array_keys(reset($array)));
foreach ($array as $row) {
fputcsv($df, $row);
fputcsv($df, $row, ";");
}
fclose($df);
return ob_get_clean();

+ 21
- 2
common/helpers/Price.php Zobrazit soubor

@@ -46,6 +46,11 @@ class Price
return self::numberTwoDecimals($number).' €';
}

public static function round($number)
{
return round($number, 2, PHP_ROUND_HALF_UP);
}

public static function getPrice($priceWithTax, $taxRate)
{
return floatval($priceWithTax) / ($taxRate + 1);
@@ -53,14 +58,28 @@ class Price

public static function getPriceWithTax($priceWithoutTax, $taxRate, $taxCalculationMethod = Document::TAX_CALCULATION_METHOD_DEFAULT)
{
$priceWithTax = floatval($priceWithoutTax) * ($taxRate + 1);
// tax
$tax = $priceWithoutTax * $taxRate;
if($taxCalculationMethod == Document::TAX_CALCULATION_METHOD_SUM_OF_ROUNDINGS) {
$tax = self::round($tax);
}

// price
$priceWithoutTax = floatval($priceWithoutTax);
$priceWithoutTax = self::round($priceWithoutTax);

$priceWithTax = $priceWithoutTax + $tax;

return $priceWithTax;

/*$priceWithTax = floatval($priceWithoutTax) * ($taxRate + 1);

if($taxCalculationMethod == Document::TAX_CALCULATION_METHOD_ROUNDING_OF_THE_SUM) {
return $priceWithTax;
}
else {
return self::numberTwoDecimals($priceWithTax);
}
}*/
}

public static function numberTwoDecimals($number)

+ 0
- 1
common/models/Document.php Zobrazit soubor

@@ -112,7 +112,6 @@ class Document extends ActiveRecordCommon
->orderBy('distribution.date ASC');
}


/*
* Méthodes
*/

Načítá se…
Zrušit
Uložit