Miglioramento tests

This commit is contained in:
Thomas Zilio 2018-11-22 15:34:44 +01:00
parent d6bd4f29a7
commit e821f15fee
23 changed files with 644 additions and 135 deletions

View File

@ -87,6 +87,8 @@ switch (post('op')) {
// Validazione della Partita IVA
$partita_iva = $anagrafica->partita_iva;
$partita_iva = strlen($partita_iva) == 9 ? $anagrafica->nazione->iso2.$partita_iva : $partita_iva;
$check_vat_number = Validate::isValidVatNumber($partita_iva);
if (empty($check_vat_number)) {
flash()->warning(tr('Attenzione: la partita IVA _IVA_ sembra non essere valida. Per conferma il servizio <a target="_blank" href="https://telematici.agenziaentrate.gov.it/VerificaPIVA/Scegli.do?parameter=verificaPiva">Verifica partita iva</a> del sito dell\'agenzia delle entrate.', [
@ -95,15 +97,15 @@ switch (post('op')) {
}
// Validazione del Codice Fiscale, solo per anagrafiche Private e Aziende, ignoro controllo se codice fiscale e settato uguale alla p.iva
$codice_fiscale = $anagrafica->codice_fiscale;
if (post('tipo') != 'Ente pubblico' and $codice_fiscale != $partita_iva){
$check_codice_fiscale = Validate::isValidTaxCode($codice_fiscale);
if (empty($check_codice_fiscale)) {
flash()->warning(tr('Attenzione: il codice fiscale _COD_ sembra non essere valido', [
'_COD_' => $codice_fiscale,
]));
}
}
$codice_fiscale = $anagrafica->codice_fiscale;
if ($anagrafica->tipo != 'Ente pubblico' and $codice_fiscale != $partita_iva) {
$check_codice_fiscale = Validate::isValidTaxCode($codice_fiscale);
if (empty($check_codice_fiscale)) {
flash()->warning(tr('Attenzione: il codice fiscale _COD_ sembra non essere valido', [
'_COD_' => $codice_fiscale,
]));
}
}
// Aggiorno il codice anagrafica se non è già presente, altrimenti lo ignoro
if ($anagrafica->codice != post('codice')) {

View File

@ -108,45 +108,36 @@ switch ($resource) {
// $custom['idtipointervento'] = 'idtipointervento_default';
break;
case 'clienti_fornitori':
case 'clienti_fornitori':
$query = "SELECT `an_anagrafiche`.`idanagrafica` AS id, CONCAT_WS('', ragione_sociale, IF(citta !='' OR provincia != '', CONCAT(' (', citta, IF(provincia!='', CONCAT(' ', provincia), ''), ')'), '')) AS descrizione, `an_tipianagrafiche`.`descrizione` AS optgroup, idtipointervento_default, an_tipianagrafiche.idtipoanagrafica FROM `an_tipianagrafiche` INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_tipianagrafiche`.`idtipoanagrafica`=`an_tipianagrafiche_anagrafiche`.`idtipoanagrafica` INNER JOIN `an_anagrafiche` ON `an_anagrafiche`.`idanagrafica`=`an_tipianagrafiche_anagrafiche`.`idanagrafica` |where| ORDER BY `optgroup` ASC, ragione_sociale ASC";
foreach ($elements as $element) {
$filter[] = 'an_anagrafiche.idanagrafica='.prepare($element);
}
if (empty($filter)) {
$where[] = 'deleted_at IS NULL';
$where[] = "an_tipianagrafiche_anagrafiche.idtipoanagrafica IN (SELECT idtipoanagrafica FROM an_tipianagrafiche WHERE descrizione = 'Cliente' OR descrizione = 'Fornitore')";
}
foreach ($elements as $element) {
$filter[] = 'an_anagrafiche.idanagrafica='.prepare($element);
}
if (!empty($search)) {
$search_fields[] = 'ragione_sociale LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'citta LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'provincia LIKE '.prepare('%'.$search.'%');
}
// Aggiunta filtri di ricerca
$where = [];
if (empty($filter)) {
$where[] = 'deleted_at IS NULL';
$where[] = "an_tipianagrafiche_anagrafiche.idtipoanagrafica IN (SELECT idtipoanagrafica FROM an_tipianagrafiche WHERE descrizione = 'Cliente' OR descrizione = 'Fornitore')";
}
if (!empty($search)) {
$search_fields[] = 'ragione_sociale LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'citta LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'provincia LIKE '.prepare('%'.$search.'%');
}
// Aggiunta filtri di ricerca
if (!empty($search_fields)) {
$where[] = '('.implode(' OR ', $search_fields).')';
}
if (!empty($filter)) {
$where[] = '('.implode(' OR ', $filter).')';
}
$query = str_replace('|where|', !empty($where) ? 'WHERE '.implode(' AND ', $where) : '', $query);
$wh = '';
if (count($where) != 0) {
$wh = 'WHERE '.implode(' AND ', $where);
}
$query = str_replace('|where|', '|where| '.$wh, $query);
$rs = $dbo->fetchArray($query);
foreach ($rs as $r) {
@ -163,7 +154,7 @@ switch ($resource) {
}
break;
// Nota Bene: nel campo id viene specificato idtipoanagrafica-idanagrafica -> modulo Utenti e permessi, creazione nuovo utente
case 'anagrafiche':
$query = "SELECT CONCAT(an_tipianagrafiche.idtipoanagrafica, '-', an_anagrafiche.idanagrafica) AS id, CONCAT_WS('', ragione_sociale, IF(citta !='' OR provincia != '', CONCAT(' (', citta, IF(provincia!='', CONCAT(' ', provincia), ''), ')'), '')) AS descrizione, idtipointervento_default FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica |where| ORDER BY ragione_sociale";

View File

@ -42,7 +42,7 @@ if (!empty($rsi)) {
foreach ($rsi as $int) {
$int = array_merge($int, get_costi_intervento($int['id']));
$totale_stato[$int['idstatointervento']] = sum($totale_stato[$int['idstatointervento']], $int['totale_scontato']);
// Riga intervento singolo
echo '
<tr style="background:'.$colori[$int['idstatointervento']].';">
@ -275,7 +275,7 @@ $budget = $rs[0]['budget'];
$rs = $dbo->fetchArray("SELECT SUM(qta) AS totale_ore FROM `co_righe_contratti` WHERE um='ore' AND idcontratto=".prepare($id_record));
$contratto_tot_ore = $rs[0]['totale_ore'];
$diff = sum($budget, -$totale_addebito);
$diff = sum($budget, -$totale);
if ($diff > 0) {
$bilancio = '<span class="text-success"><big>'.Translator::numberToLocale($diff).' &euro;</big></span>';

View File

@ -555,10 +555,14 @@ switch (post('op')) {
$articolo->id_iva = post('idiva');
$articolo->idconto = post('idconto');
$articolo->calcolo_ritenuta_acconto = post('calcolo_ritenuta_acconto');
$articolo->id_ritenuta_acconto = post('id_ritenuta_acconto');
if (post('calcolo_ritenuta_acconto')) {
$articolo->calcolo_ritenuta_acconto = post('calcolo_ritenuta_acconto');
$articolo->id_ritenuta_acconto = post('id_ritenuta_acconto');
}
$articolo->id_rivalsa_inps = post('id_rivalsa_inps');
if (post('id_rivalsa_inps')) {
$articolo->id_rivalsa_inps = post('id_rivalsa_inps');
}
$articolo->prezzo_unitario_vendita = post('prezzo');
$articolo->sconto_unitario = post('sconto');
@ -600,10 +604,14 @@ switch (post('op')) {
$riga->id_iva = post('idiva');
$riga->idconto = post('idconto');
$riga->calcolo_ritenuta_acconto = post('calcolo_ritenuta_acconto');
$riga->id_ritenuta_acconto = post('id_ritenuta_acconto');
if (post('calcolo_ritenuta_acconto')) {
$riga->calcolo_ritenuta_acconto = post('calcolo_ritenuta_acconto');
$riga->id_ritenuta_acconto = post('id_ritenuta_acconto');
}
$riga->id_rivalsa_inps = post('id_rivalsa_inps');
if (post('id_rivalsa_inps')) {
$riga->id_rivalsa_inps = post('id_rivalsa_inps');
}
$riga->prezzo_unitario_vendita = post('prezzo');
$riga->qta = $qta;

View File

@ -53,7 +53,9 @@ switch (post('op')) {
// Richiamo delle operazioni specifiche
include $imports[$id_record]['import'];
flash()->info(tr('Importazione completata. '.count($csv).' righe processate.'));
flash()->info(tr('Importazione completata: _COUNT_ righe processate', [
'_COUNT_' => count($csv),
]));
break;
}

View File

@ -45,6 +45,7 @@ if (empty($id_record)) {
$rows = Import::getFile($id_record, $record['id'], [
'limit' => 10,
]);
$count = count($rows[0]);
echo '

View File

@ -43,7 +43,7 @@ if (!empty($rsi)) {
// Tabella con i dati
foreach ($rsi as $int) {
$int = array_merge($int, get_costi_intervento($int['id']));
$totale_stato[$int['idstatointervento']] = sum($totale_stato[$int['idstatointervento']], $int['totale']);
$totale_stato[$int['idstatointervento']] = sum($totale_stato[$int['idstatointervento']], $int['totale_scontato']);
// Riga intervento singolo
echo '
@ -271,13 +271,13 @@ if (!empty($rsi)) {
/*
Bilancio del preventivo
*/
$diff = sum($budget, -$totale_addebito);
$diff = sum($budget, -$totale);
echo '
<div class="well text-center">
<br><span><big>
<b>'.tr('Rapporto budget/spesa').':<br>';
if ($budget > $totale) {
if ($diff > 0) {
echo '
<span class="text-success"><big>+'.Translator::numberToLocale($diff).' &euro;</big></span>';
} elseif ($diff < 0) {

View File

@ -1,8 +1,10 @@
<?php
use Plugins\ExportPA\FatturaElettronica;
try {
$fattura_pa = new Plugins\ExportPA\FatturaElettronica($id_record);
$fattura_pa = new FatturaElettronica($id_record);
} catch (UnexpectedValueException $e) {
}
$upload_dir = DOCROOT.'/'.Uploads::getDirectory($id_module, $id_plugin);
$upload_dir = DOCROOT.'/'.FatturaElettronica::getDirectory();

View File

@ -186,7 +186,7 @@ class FatturaElettronica
'IdPaese' => $azienda['nazione'],
'IdCodice' => $azienda['piva'],
],
'ProgressivoInvio' => $documento['codice_xml'],
'ProgressivoInvio' => $documento['progressivo_invio'],
'FormatoTrasmissione' => ($cliente['tipo'] == 'Ente pubblico') ? 'FPA12' : 'FPR12',
'CodiceDestinatario' => !empty($cliente['codice_destinatario']) ? $cliente['codice_destinatario'] : $default_code,
];
@ -623,27 +623,30 @@ class FatturaElettronica
$co_scadenziario = $database->fetchArray('SELECT * FROM `co_scadenziario` WHERE `iddocumento` = '.prepare($documento['id']));
foreach ($co_scadenziario as $scadenza) {
$pagamento = [
'ModalitaPagamento' => $co_pagamenti['codice_modalita_pagamento_fe'],
'DataScadenzaPagamento' => $scadenza['scadenza'],
'ImportoPagamento' => $scadenza['da_pagare'],
];
'ModalitaPagamento' => $co_pagamenti['codice_modalita_pagamento_fe'],
'DataScadenzaPagamento' => $scadenza['scadenza'],
'ImportoPagamento' => $scadenza['da_pagare'],
];
if (!empty($documento['idbanca'])){
$co_banche = $database->fetchOne('SELECT * FROM co_banche WHERE id = '.prepare($documento['idbanca']));
if (!empty($co_banche['nome']))
$pagamento['IstitutoFinanziario'] = $co_banche['nome'];
if (!empty($co_banche['iban']))
$pagamento['IBAN'] = $co_banche['iban'];
if (!empty($co_banche['bic']))
$pagamento['BIC'] = $co_banche['bic'];
}
if (!empty($documento['idbanca'])) {
$co_banche = $database->fetchOne('SELECT * FROM co_banche WHERE id = '.prepare($documento['idbanca']));
if (!empty($co_banche['nome'])) {
$pagamento['IstitutoFinanziario'] = $co_banche['nome'];
}
if (!empty($co_banche['iban'])) {
$pagamento['IBAN'] = $co_banche['iban'];
}
if (!empty($co_banche['bic'])) {
$pagamento['BIC'] = $co_banche['bic'];
}
}
}
$result[] = [
'DettaglioPagamento' => $pagamento
];
return $result;
$result[] = [
'DettaglioPagamento' => $pagamento
];
return $result;
}
/**
@ -694,7 +697,8 @@ class FatturaElettronica
return $attachments;
}
$dir = Uploads::getDirectory($id_module, Plugins::get('Fatturazione Elettronica')['id']);
$data = $fattura->getUploadData();
$dir = static::getDirectory();
$rapportino_nome = sanitizeFilename($documento['numero'].'.pdf');
$filename = slashes(DOCROOT.'/'.$dir.'/'.$rapportino_nome);
@ -702,6 +706,12 @@ class FatturaElettronica
$print = Prints::getModulePredefinedPrint($id_module);
Prints::render($print['id'], $documento['id'], $filename);
Uploads::delete($rapportino_nome, $data);
Uploads::register(array_merge([
'name' => 'Stampa allegata',
'original' => $rapportino_nome,
], $data));
$attachments[] = [
'NomeAttachment' => 'Fattura',
'FormatoAttachment' => 'PDF',
@ -851,6 +861,20 @@ class FatturaElettronica
return isset($json['data'][0]['OU'][0]['cod_uni_ou']) ? $json['data'][0]['OU'][0]['cod_uni_ou'] : null;
}
public static function getDirectory()
{
return Uploads::getDirectory(Modules::get('Fatture di vendita')['id']);
}
protected function getUploadData()
{
return [
'category' => tr('Fattura elettronica'),
'id_module' => Modules::get('Fatture di vendita')['id'],
'id_record' => $this->getDocumento()['id'],
];
}
/**
* Salva il file XML.
*
@ -860,6 +884,12 @@ class FatturaElettronica
*/
public function save($directory)
{
$name = 'Fattura Elettronica (XML)';
$previous = $this->getFilename();
$data = $this->getUploadData();
Uploads::delete($previous, $data);
// Generazione nome XML
$filename = $this->getFilename(true);
@ -868,34 +898,14 @@ class FatturaElettronica
$result = directory($directory) && file_put_contents($file, $this->toXML());
// Registrazione come allegato
$this->register($filename);
Uploads::register(array_merge([
'name' => $name,
'original' => $filename,
], $data));
return ($result === false) ? null : $filename;
}
/**
* Registra il file XML come allegato.
*
* @param string $filename
*/
public function register($filename)
{
$data = [
'original' => $filename,
'category' => tr('Fattura elettronica'),
'id_module' => Modules::get('Fatture di vendita')['id'],
//'id_plugin' => Plugins::get('Fatturazione Elettronica')['id'],
'id_record' => $this->getDocumento()['id'],
];
$uploads = Uploads::get($data);
$registered = in_array($filename, array_column($uploads, 'original'));
if (!$registered) {
Uploads::register($data);
}
}
/**
* Restituisce il nome del file XML per la fattura elettronica.
*
@ -906,19 +916,19 @@ class FatturaElettronica
$azienda = static::getAzienda();
$prefix = 'IT'.(empty($azienda['piva']) ? $azienda['codice_fiscale'] : $azienda['piva']);
if (empty($this->documento['codice_xml']) || !empty($new)) {
if (empty($this->documento['progressivo_invio']) || !empty($new)) {
$database = database();
do {
$code = date('y').secure_random_string(3);
} while ($database->fetchNum('SELECT `id` FROM `co_documenti` WHERE `codice_xml` = '.prepare($code)) != 0);
} while ($database->fetchNum('SELECT `id` FROM `co_documenti` WHERE `progressivo_invio` = '.prepare($code)) != 0);
// Registrazione
$database->update('co_documenti', ['codice_xml' => $code], ['id' => $this->getDocumento()['id']]);
$this->documento['codice_xml'] = $code;
$database->update('co_documenti', ['progressivo_invio' => $code], ['id' => $this->getDocumento()['id']]);
$this->documento['progressivo_invio'] = $code;
}
return $prefix.'_'.$this->documento['codice_xml'].'.xml';
return $prefix.'_'.$this->documento['progressivo_invio'].'.xml';
}
/**

0
select2('#idpagamento' Normal file
View File

View File

@ -24,7 +24,7 @@ class Auth extends \Util\Singleton
'message' => 'Utente non abilitato!',
],
'unauthorized' => [
'code' => 3,
'code' => 5,
'message' => "L'utente non ha nessun permesso impostato!",
],
];

View File

@ -37,7 +37,7 @@ class Import
$results[$module['id']] = array_merge($module->toArray(), [
'import' => file_exists($custom_file) ? $custom_file : $original_file,
'files' => $files,
'files' => array_reverse($files),
]);
}
}

View File

@ -24,8 +24,6 @@ class Validate
return true;
}
$vat_number = starts_with($vat_number, 'IT') ? $vat_number : 'IT'.$vat_number;
// Controllo con API europea ufficiale
if (extension_loaded('soap')) {
try {

View File

@ -1,5 +1,6 @@
<?php
use Codeception\Util\Locator;
/**
* Inherited Methods.
@ -96,14 +97,6 @@ class AcceptanceTester extends \Codeception\Actor
$t->clickAndWait($link, '.swal2-buttonswrapper');
}
public function expandSidebarLink($link)
{
$t = $this;
$t->click($link, '.sidebar');
$t->wait(1);
}
public function navigateTo($link)
{
$this->clickAndWait($link, '.sidebar');

View File

@ -2,6 +2,8 @@
namespace Helper;
use Codeception\Util\Locator;
// here you can define custom actions
// all public methods declared in helper class will be available in $t
@ -45,4 +47,25 @@ class Acceptance extends \Codeception\Module
return $this->getModule('WebDriver');
}
public function seePageHasElement($element)
{
try {
$this->getAcceptanceModule()->seeElement($element);
} catch (\PHPUnit_Framework_AssertionFailedError $f) {
return false;
}
return true;
}
public function expandSidebarLink($link)
{
$t = $this->getAcceptanceModule();
if (!$this->seePageHasElement("descendant-or-self::*[@class and contains(concat(' ', normalize-space(@class), ' '), ' sidebar ')]/descendant-or-self::*/li[contains(., '".$link."') and @class and contains(concat(' ', normalize-space(@class), ' '), ' menu-open ')]")) {
$t->click($link, '.sidebar');
$t->wait(1);
}
}
}

View File

@ -10,25 +10,22 @@ class RowHelper extends \Codeception\Module
protected $finalPattern = "//div[@class='panel-heading' and contains(string(), 'Righe')]/parent::*//table//tr[contains(string(), '|name|')]//td[2]";
/**
* Undocumented function.
* Completa le informazioni per la creazione di un nuovo elemento.
*
* @param AcceptanceTester $t
* @param [type] $descrizione
* @param [type] $qta
* @param [type] $prezzo
* @param int $sconto
* @param string $tipo_sconto
* @param [type] $id_iva
* @param [type] $id_rivalsa_inps
* @param [type] $id_ritenuta_acconto
* @param [type] $descrizione
* @param [type] $qta
* @param [type] $prezzo
* @param integer $sconto
* @param string $tipo_sconto
* @param [type] $id_iva
* @param [type] $id_rivalsa_inps
* @param [type] $id_ritenuta_acconto
* @return void
*/
public function addRow(AcceptanceTester $t, $descrizione, $qta, $prezzo, $sconto = 0, $tipo_sconto = 'UNT', $id_iva = null, $id_rivalsa_inps = null, $id_ritenuta_acconto = null)
protected function fill(AcceptanceTester $t, $descrizione, $qta, $prezzo, $sconto = 0, $tipo_sconto = 'UNT', $id_iva = null, $id_rivalsa_inps = null, $id_ritenuta_acconto = null)
{
// Apre il modal
$t->clickAndWaitModal('Riga', '#tab_0');
// Completa le informazioni
$t->fillField('Descrizione', $descrizione);
$t->fillField('#descrizione_riga', $descrizione);
$t->fillField('Q.tà', $qta);
$t->fillField('Costo unitario', $prezzo);
@ -50,6 +47,27 @@ class RowHelper extends \Codeception\Module
if ($id_ritenuta_acconto) {
$t->select2('#id_ritenuta_acconto', $id_ritenuta_acconto);
}
}
/**
* Aggiunge una nuova riga.
*
* @param AcceptanceTester $t
* @param string $descrizione
* @param int $qta
* @param float $prezzo
* @param int $sconto
* @param string $tipo_sconto
* @param int $id_iva
* @param int $id_rivalsa_inps
* @param int $id_ritenuta_acconto
*/
public function addRow(AcceptanceTester $t, $descrizione, $qta, $prezzo, $sconto = 0, $tipo_sconto = 'UNT', $id_iva = null, $id_rivalsa_inps = null, $id_ritenuta_acconto = null)
{
// Apre il modal
$t->clickAndWaitModal('Riga', '#tab_0');
$this->fill($t, $descrizione, $qta, $prezzo, $sconto, $tipo_sconto, $id_iva, $id_rivalsa_inps, $id_ritenuta_acconto);
// Effettua il submit
$t->clickAndWait('Aggiungi', '.modal');
@ -58,6 +76,34 @@ class RowHelper extends \Codeception\Module
$t->see('Riga aggiunta');
}
/**
* Aggiunge un nuovo articolo.
*
* @param AcceptanceTester $t
* @param string $descrizione
* @param int $qta
* @param float $prezzo
* @param int $sconto
* @param string $tipo_sconto
* @param int $id_iva
* @param int $id_rivalsa_inps
* @param int $id_ritenuta_acconto
*/
public function addArticle(AcceptanceTester $t, $id_articolo, $descrizione, $qta, $prezzo, $sconto = 0, $tipo_sconto = 'UNT', $id_iva = null, $id_rivalsa_inps = null, $id_ritenuta_acconto = null)
{
// Apre il modal
$t->clickAndWaitModal('Articolo', '#tab_0');
$t->select2ajax('#idarticolo', $id_articolo);
$this->fill($t, $descrizione, $qta, $prezzo, $sconto, $tipo_sconto, $id_iva, $id_rivalsa_inps, $id_ritenuta_acconto);
// Effettua il submit
$t->clickAndWait('Aggiungi', '.modal');
// Controlla il salvataggio finale
$t->see('Articolo aggiunto');
}
/**
* Undocumented function.
*
@ -85,6 +131,7 @@ class RowHelper extends \Codeception\Module
*/
public function testImporti(AcceptanceTester $t)
{
// Righe di test (issue #98)
$this->addRow($t, 'Riga 1', 1, 34);
$this->addRow($t, 'Riga 2', 1, 17.44);
$this->addRow($t, 'Riga 3', 48, 0.52);
@ -96,6 +143,7 @@ class RowHelper extends \Codeception\Module
$t->see('46,71', $this->getFinalValue('IVA'));
$t->see('259,05', $this->getFinalValue('Totale'));
// Righe di controllo sugli sconti
$this->addRow($t, 'Riga 7 con sconto in euro', 15, 12, 2);
$this->addRow($t, 'Riga 8 con sconto percentuale', 15, 10, 20, 'PRC');
@ -104,5 +152,27 @@ class RowHelper extends \Codeception\Module
$t->see('482,34', $this->getFinalValue('Imponibile scontato'));
$t->see('106,11', $this->getFinalValue('IVA'));
$t->see('588,45', $this->getFinalValue('Totale'));
// Sconto globale in euro
$t->fillField('Sconto incondizionato', 100);
$t->select2ajax('#tipo_sconto_generico', 'UNT');
$t->clickAndWait('Salva');
$t->see('442,34', $this->getFinalValue('Imponibile'));
$t->see('60,00', $this->getFinalValue('Sconto'));
$t->see('382,34', $this->getFinalValue('Imponibile scontato'));
$t->see('84,11', $this->getFinalValue('IVA'));
$t->see('466,45', $this->getFinalValue('Totale'));
// Sconto globale in percentuale
$t->fillField('Sconto incondizionato', 10);
$t->select2ajax('#tipo_sconto_generico', 'PRC');
$t->clickAndWait('Salva');
$t->see('494,11', $this->getFinalValue('Imponibile'));
$t->see('60,00', $this->getFinalValue('Sconto'));
$t->see('434,11', $this->getFinalValue('Imponibile scontato'));
$t->see('95,50', $this->getFinalValue('IVA'));
$t->see('529,61', $this->getFinalValue('Totale'));
}
}

View File

@ -0,0 +1,52 @@
<?php
class BackupCest
{
public function _before(\AcceptanceTester $t)
{
// Effettua l'accesso con le credenziali fornite
$t->login('admin', 'admin');
}
/**
* Crea un nuovo backup.
*
* @param AcceptanceTester $t
*/
protected function createBackup(AcceptanceTester $t)
{
// Seleziona il modulo da aprire
$t->expandSidebarLink('Strumenti');
$t->navigateTo('Backup');
$t->clickAndWaitSwal('Crea backup');
// Conferma la creazione
$t->clickSwalButton('Crea');
// Controlla il salvataggio finale
$t->see('Nuovo backup creato correttamente!');
}
/**
* Ripristina un backup specifico.
*
* @param AcceptanceTester $t
*/
protected function restoreBackup(AcceptanceTester $t, $name = nullW)
{
// Seleziona il modulo da aprire
$t->expandSidebarLink('Strumenti');
$t->navigateTo('Backup');
}
/**
* Crea una nuova anagrafica di tipo Cliente.
*
* @param AcceptanceTester $t
*/
protected function testBackup(AcceptanceTester $t)
{
$name = $this->createBackup($t);
}
}

View File

@ -0,0 +1,80 @@
<?php
use Helper\Common\RowHelper;
class ContrattiCest
{
/**
* @var Helper\SignUp
*/
protected $rowHelper;
protected function _inject(RowHelper $rowHelper)
{
$this->rowHelper = $rowHelper;
}
public function _before(\AcceptanceTester $t)
{
// Effettua l'accesso con le credenziali fornite
$t->login('admin', 'admin');
}
/**
* Crea un nuovo contratto.
*
* @param AcceptanceTester $t
*/
protected function addContratto(AcceptanceTester $t, $name, $anagrafica)
{
// Seleziona il modulo da aprire
$t->expandSidebarLink('Vendite');
$t->navigateTo('Contratti');
// Apre la schermata di nuovo elemento
$t->clickAndWaitModal('.btn-primary', '#tabs');
// Completa i campi per il nuovo elemento
$t->fillField('Nome', $name);
$t->select2ajax('#idanagrafica', $anagrafica);
// Effettua il submit
$t->clickAndWait('Aggiungi', '#add-form');
// Controlla il salvataggio finale
$t->see('Aggiunto contratto');
}
/**
* Crea una nuova anagrafica di tipo cliente e la elimina.
*
* @param AcceptanceTester $t
*/
protected function addAndDeleteContratto(AcceptanceTester $t, $name, $anagrafica = 2)
{
$this->addAnag($t, $name, $anagrafica);
// Seleziona l'azione di eliminazione
$t->clickAndWaitSwal('Elimina', '#tab_0');
// Conferma l'eliminazione
$t->clickSwalButton('Elimina');
// Controlla eliminazione
$t->see('Contratto eliminato!', '.alert-success');
}
/**
* Crea un nuovo contratto.
*
* @param AcceptanceTester $t
*/
public function testContratto(AcceptanceTester $t)
{
$this->addContratto($t, 'Contratto di test', 2);
$this->rowHelper->testImporti($t);
//$t->click('Stampa');
}
}

View File

@ -0,0 +1,92 @@
<?php
use Helper\Common\RowHelper;
class DDTCest
{
/**
* @var Helper\SignUp
*/
protected $rowHelper;
protected function _inject(RowHelper $rowHelper)
{
$this->rowHelper = $rowHelper;
}
public function _before(\AcceptanceTester $t)
{
// Effettua l'accesso con le credenziali fornite
$t->login('admin', 'admin');
}
/**
* Crea un nuovo ddt.
*
* @param AcceptanceTester $t
*/
protected function addDdt(AcceptanceTester $t, $entrata, $anagrafica, $tipo)
{
// Seleziona il modulo da aprire
$t->expandSidebarLink('Magazzino');
$t->navigateTo($entrata == true ? 'Ddt di vendita' : 'Ddt di acquisto');
// Apre la schermata di nuovo elemento
$t->clickAndWaitModal('.btn-primary', '#tabs');
// Completa i campi per il nuovo elemento
$t->select2ajax('#idanagrafica_add', $anagrafica);
$t->select2('#idtipoddt', $tipo);
// Effettua il submit
$t->clickAndWait('Aggiungi', '#add-form');
// Controlla il salvataggio finale
$t->see('Aggiunto ddt');
}
/**
* Crea una nuova anagrafica di tipo cliente e la elimina.
*
* @param AcceptanceTester $t
*/
protected function addAndDeleteDdt(AcceptanceTester $t, $entrata, $anagrafica, $tipo)
{
$this->addAnag($t, $entrata, $anagrafica, $tipo);
// Seleziona l'azione di eliminazione
$t->clickAndWaitSwal('Elimina', '#tab_0');
// Conferma l'eliminazione
$t->clickSwalButton('Elimina');
// Controlla eliminazione
$t->see('Ddt eliminato!', '.alert-success');
}
/**
* Crea un nuovo ddt.
*
* @param AcceptanceTester $t
*/
public function testDdtDiVendita(AcceptanceTester $t)
{
$this->addDdt($t, true, 2, 2);
$this->rowHelper->testImporti($t);
//$t->click('Stampa');
}
/**
* Crea un nuovo ddt.
*
* @param AcceptanceTester $t
*/
public function testDdtDiAcquisto(AcceptanceTester $t)
{
$this->addDdt($t, false, 3, 1);
$this->rowHelper->testImporti($t);
}
}

View File

@ -21,7 +21,7 @@ class FattureCest
}
/**
* Crea una nuova anagrafica.
* Crea una nuova fattura.
*
* @param AcceptanceTester $t
*/
@ -42,11 +42,11 @@ class FattureCest
$t->clickAndWait('Aggiungi', '#add-form');
// Controlla il salvataggio finale
$t->see('Aggiunta fattura numero');
$t->see('Aggiunta fattura');
}
/**
* Crea una nuova anagrafica di tipo cliente e la elimina.
* Crea una nuova fattura e la elimina.
*
* @param AcceptanceTester $t
*/
@ -61,7 +61,7 @@ class FattureCest
$t->clickSwalButton('Elimina');
// Controlla eliminazione
$t->see('Anagrafica eliminata!', '.alert-success');
$t->see('Fattura eliminata!', '.alert-success');
}
/**
@ -74,6 +74,8 @@ class FattureCest
$this->addFattura($t, true, 2, 2);
$this->rowHelper->testImporti($t);
//$t->click('Stampa');
}
/**
@ -83,7 +85,11 @@ class FattureCest
*/
public function testFatturaDiAcquisto(AcceptanceTester $t)
{
$this->addFattura($t, false, 1, 3);
$this->addFattura($t, false, 1, 4);
// Fix pagamento vuoto
$t->select2('#idpagamento', 109);
$t->clickAndWait('Salva');
$this->rowHelper->testImporti($t);
}

View File

@ -0,0 +1,95 @@
<?php
use Helper\Common\RowHelper;
class OrdiniCest
{
/**
* @var Helper\SignUp
*/
protected $rowHelper;
protected function _inject(RowHelper $rowHelper)
{
$this->rowHelper = $rowHelper;
}
public function _before(\AcceptanceTester $t)
{
// Effettua l'accesso con le credenziali fornite
$t->login('admin', 'admin');
}
/**
* Crea un nuovo ordine.
*
* @param AcceptanceTester $t
*/
protected function addOrdine(AcceptanceTester $t, $entrata, $anagrafica)
{
// Seleziona il modulo da aprire
$t->expandSidebarLink($entrata == true ? 'Vendite' : 'Acquisti');
$t->navigateTo($entrata == true ? 'Ordini cliente' : 'Ordini fornitore');
// Apre la schermata di nuovo elemento
$t->clickAndWaitModal('.btn-primary', '#tabs');
// Completa i campi per il nuovo elemento
$t->select2ajax('#idanagrafica', $anagrafica);
// Effettua il submit
$t->clickAndWait('Aggiungi', '#add-form');
// Controlla il salvataggio finale
$t->see('Aggiunto ordine');
}
/**
* Crea una nuova anagrafica di tipo cliente e la elimina.
*
* @param AcceptanceTester $t
*/
protected function addAndDeleteOrdine(AcceptanceTester $t, $entrata, $anagrafica = 2)
{
$this->addAnag($t, $entrata, $anagrafica);
// Seleziona l'azione di eliminazione
$t->clickAndWaitSwal('Elimina', '#tab_0');
// Conferma l'eliminazione
$t->clickSwalButton('Elimina');
// Controlla eliminazione
$t->see('Ordine eliminato!', '.alert-success');
}
/**
* Crea un nuovo ordine.
*
* @param AcceptanceTester $t
*/
public function testOrdineCliente(AcceptanceTester $t)
{
$this->addOrdine($t, true, 2);
$this->rowHelper->testImporti($t);
//$t->click('Stampa');
}
/**
* Crea un nuovo ordine.
*
* @param AcceptanceTester $t
*/
public function testOrdineFornitore(AcceptanceTester $t)
{
$this->addOrdine($t, false, 4);
// Fix pagamento vuoto
$t->select2('#idpagamento', 109);
$t->clickAndWait('Salva');
$this->rowHelper->testImporti($t);
}
}

View File

@ -0,0 +1,81 @@
<?php
use Helper\Common\RowHelper;
class PreventiviCest
{
/**
* @var Helper\SignUp
*/
protected $rowHelper;
protected function _inject(RowHelper $rowHelper)
{
$this->rowHelper = $rowHelper;
}
public function _before(\AcceptanceTester $t)
{
// Effettua l'accesso con le credenziali fornite
$t->login('admin', 'admin');
}
/**
* Crea un nuovo preventivo.
*
* @param AcceptanceTester $t
*/
protected function addPreventivo(AcceptanceTester $t, $name, $anagrafica, $tipo = 'GEN')
{
// Seleziona il modulo da aprire
$t->expandSidebarLink('Vendite');
$t->navigateTo('Preventivi');
// Apre la schermata di nuovo elemento
$t->clickAndWaitModal('.btn-primary', '#tabs');
// Completa i campi per il nuovo elemento
$t->fillField('Nome preventivo', $name);
$t->select2ajax('#idanagrafica', $anagrafica);
$t->select2ajax('#idtipointervento', $tipo);
// Effettua il submit
$t->clickAndWait('Aggiungi', '#add-form');
// Controlla il salvataggio finale
$t->see('Aggiunto preventivo');
}
/**
* Crea una nuova anagrafica di tipo cliente e la elimina.
*
* @param AcceptanceTester $t
*/
protected function addAndDeletePreventivo(AcceptanceTester $t, $name, $anagrafica = 2, $tipo = 'GEN')
{
$this->addAnag($t, $name, $anagrafica, $tipo);
// Seleziona l'azione di eliminazione
$t->clickAndWaitSwal('Elimina', '#tab_0');
// Conferma l'eliminazione
$t->clickSwalButton('Elimina');
// Controlla eliminazione
$t->see('Preventivo eliminato!', '.alert-success');
}
/**
* Crea un nuovo preventivo.
*
* @param AcceptanceTester $t
*/
public function testPreventivo(AcceptanceTester $t)
{
$this->addPreventivo($t, 'Preventivo di test', 2);
$this->rowHelper->testImporti($t);
//$t->click('Stampa');
}
}

View File

@ -23,4 +23,7 @@ UPDATE `zz_widgets` SET `more_link` = 'if($(\'#th_Tipo input\').val()!= \'Agente
UPDATE `zz_widgets` SET `more_link` = 'if($(\'#th_Tipo input\').val()!= \'Vettore\'){ $(\'#th_Tipo input\').val(\'Vettore\').trigger(\'keyup\');} else reset(\'Tipo\');' WHERE `zz_widgets`.`name` = 'Numero di vettori';
UPDATE `zz_widgets` SET `more_link` = 'reset(\'Tipo\');' WHERE `zz_widgets`.`name` = 'Tutte le anagrafiche';
UPDATE `zz_widgets` SET `more_link` = 'reset(\'Tipo\');' WHERE `zz_widgets`.`name` = 'Tutte le anagrafiche';
-- Fix del campo codice_xml
ALTER TABLE `co_documenti` CHANGE `codice_xml` `progressivo_invio` VARCHAR(255);