每日重复发票检查

时间:2011-07-14 18:06:58

标签: php mysql invoice invoices

我的情况如下:

我正在建立一个发票系统,除了发票重复之外,我几乎已经完成了所有工作。以下是我没有成功的尝试。

条件:

生成新的重复发票的条件是 - >

  1. 合同必须是有效的。
  2. 参考必须等于PA。
  3. 仅为尚未开具发票的合同生成发票。 (如何检查)
  4. 我将用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份合约并在我的第一个查询中显示它,它可以是空的(没问题),对我来说很重要的是合同ID。

    如果我不够清楚,请告诉我。

    感谢社区。

    [EDITED] 摘要

    • 我运行了第一个查询并获得了324行的结果。
    • 然后运行第二个查询并比较query1和query2
    • 的结果
    • 不匹配的线是差异,我需要生成 发票给他们。

    我真的想在我的查询(一个查询)中执行此操作,而不是在我的代码中执行此操作。

1 个答案:

答案 0 :(得分:2)

LEFT JOIN返回正在填写所有NULL值的发票记录。当你要求invoices.referencia to ='PA'时,这将消除所有完全为空的记录(否定你的外连接)。