feat: refs #8057 Added geoFk columns #3204

Merged
guillermo merged 10 commits from 8057-geoFk into dev 2024-11-18 11:47:54 +00:00
9 changed files with 77 additions and 12 deletions
Showing only changes of commit cba1abad68 - Show all commits

View File

@ -0,0 +1,25 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`client_getGeo`(vSelf INT)
RETURNS int(11)
DETERMINISTIC
BEGIN
/**
* Returns the geo for the passed client.
*
* @param vSelf The address id
* @return The geo id
*/
DECLARE vGeoFk INT;
SELECT p.geoFk INTO vGeoFk
FROM client c
JOIN town t ON t.provinceFk = c.provinceFk
JOIN postCode p ON p.townFk = t.id
AND p.`code` = c.postcode
WHERE c.id = vSelf
ORDER BY (c.city SOUNDS LIKE t.`name`) DESC
guillermo marked this conversation as resolved Outdated
Outdated
Review

Puede ser que el cliente no tenga codigo postal. Yo pondria, en lugar de

AND p.code = c.postcode

en el order by pondria

ORDER BY (c.city SOUNDS LIKE t.name) DESC, (p.code = c.postcode) DESC

Puede ser que el cliente no tenga codigo postal. Yo pondria, en lugar de AND p.`code` = c.postcode en el order by pondria ORDER BY (c.city SOUNDS LIKE t.`name`) DESC, (p.`code` = c.postcode) DESC
LIMIT 1;
RETURN vGeoFk;
END$$
DELIMITER ;

View File

@ -0,0 +1,25 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`supplier_getGeo`(vSelf INT)
RETURNS int(11)
DETERMINISTIC
BEGIN
/**
* Returns the geo for the passed supplier.
*
* @param vSelf The address id
* @return The geo id
*/
DECLARE vGeoFk INT;
SELECT p.geoFk INTO vGeoFk
FROM supplier s
JOIN town t ON t.provinceFk = s.provinceFk
JOIN postCode p ON p.townFk = t.id
AND p.`code` = s.postCode
guillermo marked this conversation as resolved Outdated
Outdated
Review

Lo mismo que el caso anterior. Hay 1637 proveedores sin codigo postal

Lo mismo que el caso anterior. Hay 1637 proveedores sin codigo postal
WHERE s.id = vSelf
ORDER BY (s.city SOUNDS LIKE t.`name`) DESC
LIMIT 1;
RETURN vGeoFk;
END$$
DELIMITER ;

View File

@ -6,6 +6,7 @@ BEGIN
DECLARE vIsEqualizated BOOL;
SET NEW.editorFk = account.myUser_getId();
SET NEW.geoFk = address_getGeo(NEW.id);
IF (NEW.phone <> '') THEN
CALL pbx.phone_isValid(NEW.phone);

View File

@ -3,7 +3,6 @@ CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`address_beforeUpdate`
BEFORE UPDATE ON `address`
FOR EACH ROW
BEGIN
SET NEW.editorFk = account.myUser_getId();
IF !(NEW.phone <=> OLD.phone) AND (NEW.phone <> '') THEN
@ -14,5 +13,10 @@ BEGIN
CALL pbx.phone_isValid(NEW.mobile);
END IF;
IF NOT (NEW.provinceFk <=> OLD.provinceFk)
OR (NEW.postalCode <=> OLD.postalCode) THEN
SET NEW.geoFk = address_getGeo(NEW.id);
END IF;
END$$
DELIMITER ;

View File

@ -3,8 +3,10 @@ CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`client_beforeInsert`
BEFORE INSERT ON `client`
FOR EACH ROW
BEGIN
SET NEW.editorFk = account.myUser_getId();
SET NEW.accountingAccount = 4300000000 + NEW.id;
SET NEW.lastSalesPersonFk = NEW.salesPersonFk;
SET NEW.geoFk = client_getGeo(NEW.id);
IF (NEW.phone <> '') THEN
CALL pbx.phone_isValid(NEW.phone);
@ -13,9 +15,5 @@ BEGIN
IF (NEW.mobile <> '') THEN
CALL pbx.phone_isValid(NEW.mobile);
END IF;
SET NEW.accountingAccount = 4300000000 + NEW.id;
SET NEW.lastSalesPersonFk = NEW.salesPersonFk;
END$$
DELIMITER ;

View File

@ -72,5 +72,11 @@ BEGIN
IF NOT (NEW.businessTypeFk <=> OLD.businessTypeFk) AND (NEW.businessTypeFk = 'individual' OR OLD.businessTypeFk = 'individual') THEN
SET NEW.isTaxDataChecked = 0;
END IF;
IF NOT (NEW.provinceFk <=> OLD.provinceFk)
OR (NEW.postcode <=> OLD.postcode) THEN
SET NEW.geoFk = client_getGeo(NEW.id);
END IF;
END$$
DELIMITER ;

View File

@ -4,5 +4,6 @@ CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`supplier_beforeInsert`
FOR EACH ROW
BEGIN
SET NEW.editorFk = account.myUser_getId();
SET NEW.geoFk = supplier_getGeo(NEW.id);
END$$
DELIMITER ;

View File

@ -40,5 +40,10 @@ BEGIN
SET NEW.isPayMethodChecked = FALSE;
END IF;
IF NOT (NEW.provinceFk <=> OLD.provinceFk)
OR (NEW.postcode <=> OLD.postcode) THEN
SET NEW.geoFk = client_getGeo(NEW.id);
END IF;
END$$
DELIMITER ;

View File

@ -8,13 +8,13 @@ ALTER TABLE vn.supplier
CREATE OR REPLACE TEMPORARY TABLE tSupplierGeo
(PRIMARY KEY (id))
ENGINE = MEMORY
SELECT sa.supplierFk id, p.geoFk
FROM supplierAddress sa
JOIN town t ON t.provinceFk = sa.provinceFk
SELECT s.id, p.geoFk
FROM supplier s
JOIN town t ON t.provinceFk = s.provinceFk
JOIN postCode p ON p.townFk = t.id
guillermo marked this conversation as resolved
Review

Lo mismo de antes

Lo mismo de antes
AND p.`code` = sa.postalCode
GROUP BY sa.supplierFk
ORDER BY (sa.city SOUNDS LIKE t.`name`) DESC;
AND p.`code` = s.postCode
GROUP BY s.id
ORDER BY (s.city SOUNDS LIKE t.`name`) DESC;
UPDATE supplier s
JOIN tSupplierGeo tsg ON tsg.id = s.id