Ежедневная проверка счетов-фактур - PullRequest
2 голосов
/ 14 июля 2011

Моя ситуация выглядит следующим образом:

Я создаю систему счетов, у меня почти все сделано, кроме повторяемости счетов. Вот что я пытаюсь сделать без успеха.

Состояние:

Мое условие для создания нового рекуррентного счета ->

  1. контракт должен быть активным.
  2. ссылка должна быть равна PA.
  3. генерировать счета только для контрактов, у которых еще нет счетов. (Как это можно проверить)

Я буду запускать сценарий с помощью cron, и он будет запускаться каждый день, затем я буду ежедневно генерировать счета, если в контракте их нет. Если в контрактах есть счет-фактура на эту дату, ничего не делать - выйти.

Здесь у меня есть фрагмент кода на SQL, который я извлекаю всем, у кого есть счета на эту дату (СЕЙЧАС для месяца и года).

Некоторая полезная информация:

У меня 324 активных контракта с уже созданными счетами в следующем запросе.

SELECT contratos.id, contratos.idcliente, contratos.ativo, invoices.id as inv, invoices.due_date, invoices.contratoid 
FROM contratos 
LEFT JOIN invoices ON invoices.contratoid = contratos.id 
WHERE contratos.ativo = 1 
AND invoices.referencia = 'PA' 
AND YEAR(due_date) = YEAR(CURDATE()) 
AND MONTH(due_date) = MONTH(CURDATE()) 
GROUP BY invoices.id

У меня есть 368 активных контрактов в этом другом запросе.

SELECT * FROM contracts WHERE active=1

Тогда я знаю У меня 44 контракта без счетов , и я знаю, что мне нужно создать новые счета для 44 контрактов.

Мой вопрос заключается в том, как я могу получить эти 44 контракта и показать их в своем первом запросе. Это может быть нулевой (без проблем), важный для меня идентификатор идентификатора контракта.

Если я не достаточно ясен, пожалуйста, дайте мне знать.

Спасибо Сообщество.

[Изменено] Краткое описание

  • Я выполнил свой первый запрос и получил результаты из 324 строк.
  • Затем запустите второй запрос и сравните результат query1 и query2
  • строки, которые не совпадают, - это разница, и мне нужно сгенерировать счета к ним.

Я действительно хотел бы сделать это в моем запросе (один запрос), а не в моем коде.

1 Ответ

2 голосов
/ 14 июля 2011

LEFT JOIN возвращает записи счетов, заполняемые всеми значениями NULL.Когда вам требуется invoices.referencia для = 'PA', это удалит все записи, которые являются абсолютно нулевыми (отрицая ваше внешнее объединение).

...