Miglioramento tests
This commit is contained in:
parent
d6bd4f29a7
commit
e821f15fee
|
@ -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')) {
|
||||
|
|
|
@ -109,27 +109,26 @@ 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);
|
||||
}
|
||||
foreach ($elements as $element) {
|
||||
$filter[] = 'an_anagrafiche.idanagrafica='.prepare($element);
|
||||
}
|
||||
|
||||
$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($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.'%');
|
||||
}
|
||||
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($search_fields)) {
|
||||
$where[] = '('.implode(' OR ', $search_fields).')';
|
||||
}
|
||||
|
@ -140,14 +139,6 @@ switch ($resource) {
|
|||
|
||||
$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) {
|
||||
if ($prev != $r['optgroup']) {
|
||||
|
|
|
@ -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).' €</big></span>';
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -45,6 +45,7 @@ if (empty($id_record)) {
|
|||
$rows = Import::getFile($id_record, $record['id'], [
|
||||
'limit' => 10,
|
||||
]);
|
||||
|
||||
$count = count($rows[0]);
|
||||
|
||||
echo '
|
||||
|
|
|
@ -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).' €</big></span>';
|
||||
} elseif ($diff < 0) {
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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
|
||||
];
|
||||
$result[] = [
|
||||
'DettaglioPagamento' => $pagamento
|
||||
];
|
||||
|
||||
return $result;
|
||||
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';
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -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!",
|
||||
],
|
||||
];
|
||||
|
|
|
@ -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),
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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');
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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'));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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');
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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');
|
||||
}
|
||||
}
|
|
@ -24,3 +24,6 @@ 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';
|
||||
|
||||
-- Fix del campo codice_xml
|
||||
ALTER TABLE `co_documenti` CHANGE `codice_xml` `progressivo_invio` VARCHAR(255);
|
||||
|
|
Loading…
Reference in New Issue