DELIMITER $$ CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`client_create`( vFirstname VARCHAR(50), vSurnames VARCHAR(50), vFi VARCHAR(9), vAddress TEXT, vPostcode CHAR(5), vCity VARCHAR(25), vProvinceFk SMALLINT(5), vCompanyFk SMALLINT(5), vPhone VARCHAR(11), vEmail VARCHAR(255), vUserFk INT ) BEGIN /** * Create new client * * @params vFirstname firstName * @params vSurnames surnames * @params vFi company code from accounting transactions * @params vAddress address * @params vPostcode postCode * @params vCity city * @params vProvinceFk province * @params vCompanyFk company in which he has become a client * @params vPhone telephone number * @params vEmail email address * @params vUserFk user id */ DECLARE vPayMethodFk INT; DECLARE vDueDay INT; DECLARE vDefaultCredit DECIMAL(10, 2); DECLARE vIsTaxDataChecked TINYINT(1); DECLARE vHasCoreVnl BOOLEAN; DECLARE vMandateTypeFk INT; SELECT cc.defaultPayMethodFk, cc.defaultDueDay, cc.defaultCredit, cc.defaultIsTaxDataChecked, cc.defaultHasCoreVnl, cc.defaultMandateTypeFk INTO vPayMethodFk, vDueDay, vDefaultCredit, vIsTaxDataChecked, vHasCoreVnl, vMandateTypeFk FROM clientConfig cc LEFT JOIN province p ON p.id = vProvinceFk LEFT JOIN country c ON c.id = p.countryFk; INSERT INTO `client` SET id = vUserFk, name = CONCAT(vFirstname, ' ', vSurnames), street = vAddress, fi = TRIM(vFi), phone = vPhone, email = vEmail, provinceFk = vProvinceFk, city = vCity, postcode = vPostcode, socialName = UPPER(CONCAT(vSurnames, ' ', vFirstname)), payMethodFk = vPayMethodFk, dueDay = vDueDay, credit = vDefaultCredit, isTaxDataChecked = vIsTaxDataChecked, hasCoreVnl = vHasCoreVnl, isEqualizated = FALSE ON duplicate KEY UPDATE payMethodFk = vPayMethodFk, dueDay = vDueDay, credit = vDefaultCredit, isTaxDataChecked = vIsTaxDataChecked, hasCoreVnl = vHasCoreVnl, isActive = TRUE; INSERT INTO mandate (clientFk, companyFk, mandateTypeFk) SELECT vUserFk, vCompanyFk, vMandateTypeFk WHERE NOT EXISTS ( SELECT id FROM mandate WHERE clientFk = vUserFk AND companyFk = vCompanyFk AND mandateTypeFk = vMandateTypeFk ); END$$ DELIMITER ;