Skip to content

Commit

Permalink
Merge 1ff5037 into cc32040
Browse files Browse the repository at this point in the history
  • Loading branch information
elguitarraverde committed Apr 24, 2024
2 parents cc32040 + 1ff5037 commit 96cd29d
Show file tree
Hide file tree
Showing 8 changed files with 152 additions and 14 deletions.
2 changes: 1 addition & 1 deletion Core/Model/Base/IntracomunitariaTrait.php
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ public function setIntracomunitaria(): bool
$subject = $this->getSubject();
$country = property_exists($this, 'codpais')
? Paises::get($this->codpais)
: Paises::get($subject->getDefaultAddress()->codpais);
: Paises::get($subject->codpais);
if (false === Paises::miembroUE($country->codpais)) {
Tools::log()->warning('subject-not-in-eu');
return false;
Expand Down
14 changes: 13 additions & 1 deletion Core/Model/Cliente.php
Original file line number Diff line number Diff line change
Expand Up @@ -64,9 +64,18 @@ class Cliente extends Base\ComercialContact
/** @var float */
public $riesgomax;

/** @var string */
public $codpais;

/** @var string */
public $provincia;

/** @var string */
public $ciudad;

public function checkVies(): bool
{
$codiso = Paises::get($this->getDefaultAddress()->codpais)->codiso ?? '';
$codiso = Paises::get($this->codpais)->codiso ?? '';
return Vies::check($this->cifnif ?? '', $codiso) === 1;
}

Expand Down Expand Up @@ -309,6 +318,9 @@ protected function saveInsert(array $values = []): bool
$contact->tipoidfiscal = $this->tipoidfiscal;
if ($contact->save()) {
$this->idcontactofact = $contact->idcontacto;
$this->codpais = $contact->codpais;
$this->provincia = $contact->provincia;
$this->ciudad = $contact->ciudad;
return $this->save();
}
}
Expand Down
27 changes: 27 additions & 0 deletions Core/Model/Contacto.php
Original file line number Diff line number Diff line change
Expand Up @@ -289,4 +289,31 @@ public function url(string $type = 'auto', string $list = 'ListCliente?activetab
{
return parent::url($type, $list);
}

protected function saveUpdate(array $values = []):bool
{
if(parent::saveUpdate($values)){
if (!empty($this->codcliente) && empty($this->codproveedor)){
$subject = new Cliente();
$subject->loadFromCode($this->codcliente);
$idContact = $subject->idcontactofact;
}else{
$subject = new Proveedor();
$subject->loadFromCode($this->codproveedor);
$idContact = $subject->idcontacto;
}

// solo actualizamos si el contacto a actualizar es el contacto por defecto.
if($idContact === $this->idcontacto){
$subject->codpais = $this->codpais;
$subject->provincia = $this->provincia;
$subject->ciudad = $this->ciudad;
$subject->save();
}

return true;
}

return false;
}
}
14 changes: 13 additions & 1 deletion Core/Model/Proveedor.php
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,18 @@ class Proveedor extends Base\ComercialContact
/** @var int */
public $idcontacto;

/** @var string */
public $codpais;

/** @var string */
public $provincia;

/** @var string */
public $ciudad;

public function checkVies(): bool
{
$codiso = Paises::get($this->getDefaultAddress()->codpais)->codiso ?? '';
$codiso = Paises::get($this->codpais)->codiso ?? '';
return Vies::check($this->cifnif ?? '', $codiso) === 1;
}

Expand Down Expand Up @@ -239,6 +248,9 @@ protected function saveInsert(array $values = []): bool
$contact->tipoidfiscal = $this->tipoidfiscal;
if ($contact->save()) {
$this->idcontacto = $contact->idcontacto;
$this->codpais = $contact->codpais;
$this->provincia = $contact->provincia;
$this->ciudad = $contact->ciudad;
return $this->save();
}
}
Expand Down
14 changes: 13 additions & 1 deletion Core/Table/clientes.xml
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,18 @@
<name>web</name>
<type>character varying(100)</type>
</column>
<column>
<name>codpais</name>
<type>character varying(20)</type>
</column>
<column>
<name>provincia</name>
<type>character varying(100)</type>
</column>
<column>
<name>ciudad</name>
<type>character varying(100)</type>
</column>
<constraint>
<name>clientes_pkey</name>
<type>PRIMARY KEY (codcliente)</type>
Expand Down Expand Up @@ -159,4 +171,4 @@
<name>ca_clientes_tarifas</name>
<type>FOREIGN KEY (codtarifa) REFERENCES tarifas (codtarifa) ON DELETE SET NULL ON UPDATE CASCADE</type>
</constraint>
</table>
</table>
14 changes: 13 additions & 1 deletion Core/Table/proveedores.xml
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,18 @@
<name>web</name>
<type>character varying(100)</type>
</column>
<column>
<name>codpais</name>
<type>character varying(20)</type>
</column>
<column>
<name>provincia</name>
<type>character varying(100)</type>
</column>
<column>
<name>ciudad</name>
<type>character varying(100)</type>
</column>
<constraint>
<name>proveedores_pkey</name>
<type>PRIMARY KEY (codproveedor)</type>
Expand All @@ -128,4 +140,4 @@
<name>ca_proveedores_series</name>
<type>FOREIGN KEY (codserie) REFERENCES series (codserie) ON DELETE SET NULL ON UPDATE CASCADE</type>
</constraint>
</table>
</table>
41 changes: 36 additions & 5 deletions Test/Core/Model/ClienteTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -192,10 +192,8 @@ public function testVies(): void
}
$this->assertFalse($check1);

// asignamos dirección de Portugal
$address = $cliente->getDefaultAddress();
$address->codpais = 'PRT';
$this->assertTrue($address->save());
$cliente->codpais = 'PRT';
$this->assertTrue($cliente->save());

// asignamos un cifnif incorrecto
$cliente->cifnif = '12345678A';
Expand All @@ -206,10 +204,43 @@ public function testVies(): void
$this->assertTrue($cliente->checkVies());

// eliminamos
$this->assertTrue($address->delete());
$this->assertTrue($cliente->delete());
}

public function testAddressDefaultContactInModel()
{
$cliente = new Cliente();
$cliente->nombre = 'Test';
$cliente->cifnif = '12345678A';
$this->assertTrue($cliente->save(), 'cliente-cant-save');

// comprobamos que el codpais, provincia y ciudad del contacto por defecto
// se encuentran replicados en el modelo
$defaultAddress = $cliente->getDefaultAddress();

$this->assertEquals($defaultAddress->codpais, $cliente->codpais);
$this->assertEquals($defaultAddress->provincia, $cliente->provincia);
$this->assertEquals($defaultAddress->ciudad, $cliente->ciudad);

// comprobamos que cuando se cambian los datos en el contacto
// se guardan en el modelo

$defaultAddress->codpais = 'COL';
$defaultAddress->provincia = 'Test-provincia';
$defaultAddress->ciudad = 'Test-ciudad';
$defaultAddress->save();

$cliente->loadFromCode($cliente->codcliente); // actualizamos desde la base de datos
$this->assertEquals($defaultAddress->codpais, $cliente->codpais);
$this->assertEquals($defaultAddress->provincia, $cliente->provincia);
$this->assertEquals($defaultAddress->ciudad, $cliente->ciudad);


// eliminamos
$this->assertTrue($cliente->getDefaultAddress()->delete(), 'contacto-cant-delete');
$this->assertTrue($cliente->delete(), 'cliente-cant-delete');
}

protected function tearDown(): void
{
$this->logErrors();
Expand Down
40 changes: 36 additions & 4 deletions Test/Core/Model/ProveedorTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -167,9 +167,8 @@ public function testVies(): void
$this->assertFalse($check1);

// asignamos dirección de Italia
$address = $proveedor->getDefaultAddress();
$address->codpais = 'ITA';
$this->assertTrue($address->save());
$proveedor->codpais = 'ITA';
$this->assertTrue($proveedor->save());

// asignamos un cif/nif incorrecto
$proveedor->cifnif = '12345678A';
Expand All @@ -180,10 +179,43 @@ public function testVies(): void
$this->assertTrue($proveedor->checkVies());

// eliminamos
$this->assertTrue($address->delete());
$this->assertTrue($proveedor->delete());
}

public function testAddressDefaultContactInModel()
{
$supplier = new Proveedor();
$supplier->nombre = 'Test';
$supplier->cifnif = '12345678A';
$this->assertTrue($supplier->save(), 'cliente-cant-save');

// comprobamos que el codpais, provincia y ciudad del contacto por defecto
// se encuentran replicados en el modelo
$defaultAddress = $supplier->getDefaultAddress();

$this->assertEquals($defaultAddress->codpais, $supplier->codpais);
$this->assertEquals($defaultAddress->provincia, $supplier->provincia);
$this->assertEquals($defaultAddress->ciudad, $supplier->ciudad);

// comprobamos que cuando se cambian los datos en el contacto
// se guardan en el modelo

$defaultAddress->codpais = 'COL';
$defaultAddress->provincia = 'Test-provincia';
$defaultAddress->ciudad = 'Test-ciudad';
$defaultAddress->save();

$supplier->loadFromCode($supplier->codproveedor); // actualizamos desde la base de datos
$this->assertEquals($defaultAddress->codpais, $supplier->codpais);
$this->assertEquals($defaultAddress->provincia, $supplier->provincia);
$this->assertEquals($defaultAddress->ciudad, $supplier->ciudad);


// eliminamos
$this->assertTrue($supplier->getDefaultAddress()->delete(), 'contacto-cant-delete');
$this->assertTrue($supplier->delete(), 'cliente-cant-delete');
}

protected function tearDown(): void
{
$this->logErrors();
Expand Down

0 comments on commit 96cd29d

Please sign in to comment.