Skip to content

Instantly share code, notes, and snippets.

@romaninsh
Last active July 20, 2016 06:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save romaninsh/0cdb53e67f8cf983255b0a203ec3e73d to your computer and use it in GitHub Desktop.
Save romaninsh/0cdb53e67f8cf983255b0a203ec3e73d to your computer and use it in GitHub Desktop.
What you write and what query Agile Data builds you.
<?php
// uses https://github.com/atk4/data
$c = new smbo\Model_Payment_Transfer($db);
$c->getRef('transfer_document_id')
->addFields(['other_side'=>'total_gross', 'other_account_currency'=>'account_currency','other_account'=>'account']);
$c->addCondition($c->expr('abs([total_gross])!=abs([other_side])'));
$c->addCondition($c->expr('[account_currency]=[other_account_currency]'));
$c->onlyFields([
'system_id','system','id','doc_date','ref_no','account','other_account','total_gross','other_side',
'account_currency','other_account_currency'
]);
echo $c->action('select')->getDebugQuery();
SELECT `dochead`.`system_id`,
(SELECT (SELECT `s`.`legal_name`
FROM `contractor` `s`
LEFT JOIN `company` AS `s_c`
ON `s_c`.`contractor_id` = `s`.`id`
WHERE `s`.`deleted` = 'N'
AND `s`.`id` = `s`.`contractor_id`)
FROM `system` `s`
WHERE `s`.`id` = `dochead`.`system_id`) `system`,
`dochead`.`id`,
`dochead`.`doc_date`,
`dochead`.`ref_no`,
(SELECT `name`
FROM `account` `a`
WHERE `deleted` = 'N'
AND `id` = `_p`.`account_id`) `account`,
(SELECT (SELECT `name`
FROM `account` `a`
WHERE `deleted` = 'N'
AND `id` = `td_p`.`account_id`)
FROM `dochead` `td`
LEFT JOIN `payment` AS `td_p`
ON `td_p`.`dochead_id` = `td`.`id`
WHERE `td`.`deleted` = 'N'
AND `td`.`doc_type` = 'payment'
AND `td_p`.`transfer_document_id` IS NOT NULL
AND `td`.`id` = `_p`.`transfer_document_id`) `other_account`,
`dochead`.`total_gross`,
(SELECT `td`.`total_gross`
FROM `dochead` `td`
LEFT JOIN `payment` AS `td_p`
ON `td_p`.`dochead_id` = `td`.`id`
WHERE `td`.`deleted` = 'N'
AND `td`.`doc_type` = 'payment'
AND `td_p`.`transfer_document_id` IS NOT NULL
AND `td`.`id` = `_p`.`transfer_document_id`) `other_side`,
(SELECT (SELECT `name`
FROM `currency` `c`
WHERE `id` = `a`.`currency_id`)
FROM `account` `a`
WHERE `a`.`deleted` = 'N'
AND `a`.`id` = `_p`.`account_id`) `account_currency`,
(SELECT (SELECT (SELECT `name`
FROM `currency` `c`
WHERE `id` = `a`.`currency_id`)
FROM `account` `a`
WHERE `a`.`deleted` = 'N'
AND `a`.`id` = `td_p`.`account_id`)
FROM `dochead` `td`
LEFT JOIN `payment` AS `td_p`
ON `td_p`.`dochead_id` = `td`.`id`
WHERE `td`.`deleted` = 'N'
AND `td`.`doc_type` = 'payment'
AND `td_p`.`transfer_document_id` IS NOT NULL
AND `td`.`id` = `_p`.`transfer_document_id`)
`other_account_currency`,
`dochead`.`contractor_from`,
`dochead`.`contractor_to`,
`dochead`.`vat_rate_id`,
`dochead`.`currency_id`,
`dochead`.`vat_period_id`,
`dochead`.`journal_spec_id`,
`dochead`.`job_id`,
`dochead`.`nominal_id`,
`dochead`.`doc_type`,
`dochead`.`deleted`,
`dochead`.`created_by`,
`dochead`.`deleted_by`,
`dochead`.`updated_by`,
`_p`.`payment_type_id`,
`_p`.`account_id`,
`_p`.`account_reconcile_id`,
`_p`.`bank_statement_id`,
`_p`.`transfer_document_id`,
`dochead`.`id` `_p`
FROM `dochead`
LEFT JOIN `payment` AS `_p`
ON `_p`.`dochead_id` = `dochead`.`id`
WHERE `dochead`.`deleted` = 'N'
AND `dochead`.`doc_type` = 'payment'
AND `_p`.`transfer_document_id` IS NOT NULL
AND Abs(`dochead`.`total_gross`) != Abs((SELECT `td`.`total_gross`
FROM `dochead` `td`
LEFT JOIN `payment` AS
`td_p`
ON `td_p`.`dochead_id` =
`td`.`id`
WHERE
`td`.`deleted` = 'N'
AND `td`.`doc_type` = 'payment'
AND `td_p`.`transfer_document_id` IS
NOT NULL
AND `td`.`id` =
`_p`.`transfer_document_id`))
AND (SELECT (SELECT `name`
FROM `currency` `c`
WHERE `id` = `a`.`currency_id`)
FROM `account` `a`
WHERE `a`.`deleted` = 'N'
AND `a`.`id` = `_p`.`account_id`) = (SELECT (SELECT
(SELECT `name`
FROM
`currency` `c`
WHERE
`id` = `a`.`currency_id`)
FROM `account` `a`
WHERE `a`.`deleted` =
'N'
AND
`a`.`id` = `td_p`.`account_id`)
FROM `dochead` `td`
LEFT JOIN `payment` AS
`td_p`
ON `td_p`.`dochead_id` = `td`.`id`
WHERE
`td`.`deleted` = 'N'
AND `td`.`doc_type` =
'payment'
AND `td_p`.`transfer_document_id` IS NOT NULL
AND `td`.`id` = `_p`.`transfer_document_id`)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment