查询以获取分类帐报告页面的余额

时间:2014-05-10 17:22:56

标签: php mysql report

我想建立一个分类帐报告页面

这是我的表结构..

CREATE TABLE IF NOT EXISTS `tran` (
  `tran_no` int(10) NOT NULL COMMENT 'S.S.N.',
  `date` varchar(100) NOT NULL,
  `cid` int(11) NOT NULL,
  `ref` varchar(100) NOT NULL,
  `amt` varchar(100) NOT NULL,
  `type` varchar(100) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;


INSERT INTO `tran` (`tran_no`, `date`, `cid`, `ref`, `amt`, `type`) VALUES
(1, '2014/04/25', 1, '123', '35280', 'Sales'),
(2, '2014/04/25', 1, '124', '35280', 'Sales'),
(3, '2014/04/01', 3, '1236', '2000', 'Sales'),
(4, '2014/04/25', 1, '126', '35280', 'Sales'),
(5, '2014/04/25', 1, '127', '35280', 'Sales'),
(6, '2014/04/24', 1, '128', '50000', 'Sales'),
(7, '2014/04/24', 1, '131', '50000', 'Sales'),
(8, '2014/04/24', 1, '129', '12000', 'Sales'),
(9, '2014/04/24', 1, '130', '11000', 'Sales'),
(10, '2014/04/22', 2, '156', '50000', 'Sales'),
(12, '2014/04/23', 1, '130', '54321', 'Sales'),
(13, '2014/04/24', 2, '131', '54320', 'Sales'),
(14, '2014/04/27', 2, '132', '12345', 'Sales'),
(15, '2014/04/27', 2, '133', '55555', 'Sales'),
(16, '2014/04/08', 2, '1234', '30000', 'Receipt'),
(17, '2014/04/11', 2, '1235', '5000',  'Receipt'),
(18, '2014/04/01', 2, '1236', '2000', 'Receipt'),
(19, '2014/04/14', 2, '1237', '5000', 'Receipt'),
(20, '2014/04/20', 2, '134', '50000', 'Receipt'),
(21, '2014/04/28', 2, '111', '45455', 'Receipt'),
(22, '2014/04/28', 2, '112', '54545', 'Receipt'),
(23, '2014/05/01', 3, '1234', '55000', 'Sales'),
(24, '2014/05/02', 3, '113', '25000', 'Receipt');

还有另一个表,其中包含有未结余额的客户信息

   CREATE TABLE IF NOT EXISTS `customer` (
  `cid` int(3) NOT NULL AUTO_INCREMENT COMMENT 'Customer ID',
  `cname` char(50) NOT NULL COMMENT 'Customer Name',
  `cadd` char(50) NOT NULL COMMENT 'Address',
  `cemail` char(50) NOT NULL COMMENT 'Email',
  `cphone` char(15) NOT NULL COMMENT 'Phone',
  `cperson` char(50) NOT NULL COMMENT 'Contact Person',
  `cmob` char(15) NOT NULL COMMENT 'Mobile Number',
  `cob` int(30) NOT NULL COMMENT 'Opening Balance',
  PRIMARY KEY (`cid`),
  KEY `cname` (`cname`,`cadd`,`cemail`,`cphone`,`cperson`,`cob`),
  KEY `cperson` (`cperson`),
  KEY `cmob` (`cmob`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

--
-- Dumping data for table `customer`
--

INSERT INTO `customer` (`cid`, `cname`, `cadd`, `cemail`, `cphone`, `cperson`, `cmob`, `cob`) VALUES
(1, 'CASH', 'N/A', '', 'n/a', 'CASH', '', 0),
(2, 'GURUDEV ENGINEERING', 'DHARMA CHOWK', '', '056527784', 'RAJAN KANDEL', '9845045093', 50000),
(3, 'ASIAN GENERAL', 'DHARMA CHOWK', 'n/a', '056530757', 'PADAM CHHETRI', '9845082712', 100000),
(4, 'KANDEL ELECTRIC', 'DHARMA CHOWK', 'n/a', '056526105', 'BHOJRAJ KANDEL', '9845077618', 55555);

对于CID-2的分类帐报告页面,我希望将其显示为 -

REPORT of CID-2
-------------------------------------------------
|   date    | ref   | sales | receipt | balance |
|-----------+-------+-------+---------+---------+
|opening bal        |       |         | 50000   |
|2014/04/01 | 1236  |       | 2000    | 48000   |
|2014/04/08 | 1234  |       | 30000   | 18000   |
|2014/04/11 | 1235  |       | 5000    | 13000   |
|2014/04/14 | 1237  |       | 5000    | 8000    |
|2014/04/20 | 134   |       | 50000   | -42000  |
|2014/04/22 | 156   | 50000 |         | 8000    |
|2014/04/24 | 131   | 54320 |         | 62320   |
|2014/04/27 | 133   | 55555 |         | 117875  |
|2014/04/27 | 132   | 12345 |         | 130220  |
|2014/04/28 | 111   |       | 45455   | 84765   |
|2014/04/28 | 112   |       | 54545   | 30220   |
|-----------+-------+-------+---------+---------+
|closing balance    | 172220| 192000  | 30220   |
-------------------------------------------------

我检索了所有列以及来自不同查询的第一行和最后一行,但无法获取余额列。我尝试了来自其他问题的不同建议的不同查询。来自STACKEXCHANGE的答案,但他们都没有给出我想要的结果..

请帮我解决这个问题....

提前感谢....

编辑:我做过的是 -

$result4 = mysqli_query($connect, "SELECT sum(samt), sum(ramt) FROM tran WHERE cid='$cid'") or die("Error: " . mysqli_error($connect));
$row4 = mysqli_fetch_array($result4);
$TotalSales = $row4['sum(samt)'];
$TotalReceipt = $row4['sum(ramt)'];
$balance = $ob + $TotalSales - $TotalReceipt;

echo "
<table border='1' cellpadding='6' style='font-size:14px' cellspacing='0'>
    <tr bgcolor='#006699' align='center' style='font-weight:bold;'>
        <td width='150px'>Date</td>
        <td>Sales No.</td>";
        if ($rs->cname!='CASH') { echo "<td width='150px'>Receipt No.</td>"; }
echo"
        <td width='200px'>Sales</td>";
        if ($rs->cname!='CASH') { echo "<td width='150px'>Receipt</td>"; }
echo"
    </tr>";
// select tran
$sql = "SELECT * FROM tran WHERE cid = '$cid' ORDER BY date";
$result = mysqli_query($connect, $sql) or die("Error: " . mysqli_error($connect));

while($row = mysqli_fetch_array($result)) {
echo "
    <tr bgcolor='#999911' align='center'>
        <td>" . $row['date'] . "</td>
        <td>";
        if ($row['sref'] > 0) {
        echo "<a href='salesedit.php?ssn=$row[ssn]' class=slink>" . $row['sref'];
        } else {
            echo " ";
        }
        echo "
        </td>";
        if ($rs->cname!='CASH') {
            echo "<td>";
            if ($row['rref'] > 0) {
                echo "<a href='receiptedit.php?rsn=$row[rsn]' class='slink'>" . $row['rref'] . "</a>";
            } else {
                echo " ";
            }
        }
        echo "</td>";
        if ($row['samt'] > 0) {
        echo "<td align='right'>Rs." . number_format(($row['samt']), 2, '.', ',') . "</td>";
        } else {
            echo "<td align='center'>-</td>";
        }
        if ($rs->cname!='CASH') {
            if ($row['ramt'] > 0) {
                echo "<td align='right'>Rs." . number_format(($row['ramt']), 2, '.', ',') . "</td>";
            } else {
                echo "<td align='center'>-</td>";
            }
        }
        echo
        "</td>
    </tr>";
    }
echo "
    <tr bgcolor='#FFFFFF' align='center'>
        <td>Total:</td>
        <td>" . $n . " Sale(s)</td>";
                if ($rs->cname!='CASH') { echo "<td>" . $n1 . " Receipt(s)</td>"; }
echo"
        <td align='right'>Rs. " . number_format(($TotalSales), 2, '.', ',') . "</td>";
        if ($rs->cname!='CASH') { echo "<td align='right'>Rs. " . number_format(($TotalReceipt), 2, '.', ',') . "</td>"; }
echo "
    </tr>
</table>";

0 个答案:

没有答案