Пример #1
0
/**
 * does an employee ledger transaction
 *
 * @param int $empid employee id seq
 * @param int $contra account id seq
 * @param string $date
 * @param int $ref reference number
 * @param string $details description of transaction
 * @param float $amount
 * @param char $type D/C - debit/credit employee ledger
 */
function empledger($empid, $contra, $date, $ref, $details, $amount, $type)
{
    $amount = abs($amount);
    if (floatval($amount) == 0) {
        return;
    }
    $edate = date("Y-m-d");
    list($PRD_DB, $PRD_NAME) = getPRD($date);
    list($CUR_PRD_DB, $CUR_PRD_NAME) = getPRD($edate);
    db_conn($PRD_DB);
    if ($type == "d") {
        $damount = $amount;
        $camount = 0;
        # Get balances
        $idRs = get($PRD_DB, "max(id)", "empledger", "empid", $empid);
        $id = pg_fetch_array($idRs);
        if ($id['max'] != 0) {
            $balRs = get($PRD_DB, "cbalance,dbalance", "empledger", "id", $id['max']);
            $bal = pg_fetch_array($balRs);
            $bal['cbalance'] += 0;
            $bal['dbalance'] += $amount;
        } else {
            $balRs = get("cubit", "balance", "employees", "empnum", $empid);
            $bal = pg_fetch_array($balRs);
            $bal['balance'] += 0;
            if ($bal['balance'] < 0) {
                $bal['dbalance'] = $bal['balance'] * -1;
                $bal['cbalance'] = 0;
            } else {
                $bal['cbalance'] = $bal['balance'];
                $bal['dbalance'] = 0;
            }
            //$bal['dbalance'] += $amount;
        }
        # Total balance changes
        if ($bal['dbalance'] >= $bal['cbalance']) {
            $bal['dbalance'] = $bal['dbalance'] - $bal['cbalance'];
            $bal['cbalance'] = 0;
        } elseif ($bal['cbalance'] > $bal['dbalance']) {
            $bal['cbalance'] = $bal['cbalance'] - $bal['dbalance'];
            $bal['dbalance'] = 0;
        }
        db_conn($PRD_DB);
        $sql = "\n\t\t\tINSERT INTO empledger (\n\t\t\t\tempid, contra, edate,sdate, ref, des, debit, dbalance, cbalance, div\n\t\t\t) VALUES (\n\t\t\t\t'{$empid}', '{$contra}', '{$date}','{$edate}', '{$ref}', '{$details}', '{$amount}', {$bal['dbalance']}, '{$bal['cbalance']}', '" . USER_DIV . "'\n\t\t\t)";
    } else {
        $camount = $amount;
        $damount = 0;
        # Get balances
        $idRs = get($PRD_DB, "max(id)", "empledger", "empid", $empid);
        $id = pg_fetch_array($idRs);
        if ($id['max'] != 0) {
            $balRs = get($PRD_DB, "cbalance,dbalance", "empledger", "id", $id['max']);
            $bal = pg_fetch_array($balRs);
            $bal['cbalance'] += 0;
            $bal['dbalance'] += 0;
            $bal['cbalance'] += $amount;
        } else {
            $balRs = get("cubit", "balance", "employees", "empnum", $empid);
            $bal = pg_fetch_array($balRs);
            $bal['balance'] += 0;
            if ($bal['balance'] < 0) {
                $bal['dbalance'] = $bal['balance'] * -1;
                $bal['cbalance'] = 0;
            } else {
                $bal['cbalance'] = $bal['balance'];
                $bal['dbalance'] = 0;
            }
        }
        # Total balance changes
        if ($bal['dbalance'] > $bal['cbalance']) {
            $bal['dbalance'] = $bal['dbalance'] - $bal['cbalance'];
            $bal['cbalance'] = 0;
        } elseif ($bal['cbalance'] > $bal['dbalance']) {
            $bal['cbalance'] = $bal['cbalance'] - $bal['dbalance'];
            $bal['dbalance'] = 0;
        } else {
            $bal['cbalance'] = 0;
            $bal['dbalance'] = 0;
        }
        db_conn($PRD_DB);
        $sql = "INSERT INTO empledger(empid, contra, edate,sdate, ref, des, credit, dbalance, cbalance, div)\n\t\tVALUES('{$empid}', '{$contra}', '{$date}','{$edate}', '{$ref}', '{$details}', '{$amount}', '{$bal['dbalance']}', '{$bal['cbalance']}', '" . USER_DIV . "')";
    }
    $rs = db_exec($sql) or errdie("Unable to insert ledger entry to the Database.");
    db_conn('cubit');
    $Sl = "SELECT * FROM users WHERE username='******' AND div='" . USER_DIV . "' AND state='p'";
    $Ri = db_exec($Sl);
    //if(pg_num_rows($Ri)>0) {
    $data = pg_fetch_array($Ri);
    // 	db_conn('core');
    //
    // 	$Sl="SELECT * FROM active";
    // 	$Ri=db_exec($Sl) or errDie("Unablet to get data.");
    //
    // 	$data=pg_fetch_array($Ri);
    global $PRDMON, $MONPRD;
    if (true || $MONPRD[$PRD_DB] < $MONPRD[$CUR_PRD_DB]) {
        for ($iPRD = $MONPRD[$PRD_DB] + 1; $iPRD <= 12; ++$iPRD) {
            if ($type == "d") {
                $d_extra = $amount;
                $c_extra = 0;
            } else {
                $d_extra = 0;
                $c_extra = $amount;
            }
            $d_extra = $c_extra = 0;
            db_conn($PRDMON[$iPRD]);
            $sql = "UPDATE empledger SET dbalance=dbalance+'{$damount}',cbalance=cbalance+'{$camount}'\n\t\t\t\tWHERE empid='{$empid}'";
            $Ri = db_exec($sql) or errDie("Unable to update suppledeger.");
            if (pg_affected_rows($Ri) <= 0) {
                $sql = "INSERT INTO empledger(empid, contra, edate,sdate, ref, des,\n\t\t\t\t\t\tcredit, dbalance, cbalance, div)\n\t\t\t\t\tVALUES('{$empid}', '0', '{$date}','{$edate}', '{$ref}', 'Balance',\n\t\t\t\t\t\t'0', '{$bal['dbalance']}', '{$bal['cbalance']}', '" . USER_DIV . "')";
                db_exec($sql) or errDie("Error updating employee ledger (PINS).");
            } else {
                //$Sl="SELECT * FROM empledger WHERE empid='$empid'";
                //$Rl=db_exec($Sl) or errDie("Unable to get ledger.");
                //while($cdata=pg_fetch_array($Rl)) {
                //	if($cdata['dbalance']>=$cdata['cbalance']) {
                $sql = "UPDATE empledger SET dbalance=dbalance-cbalance,cbalance=0\n\t\t\t\t\tWHERE empid='{$empid}' AND dbalance>=cbalance";
                db_exec($sql) or errDie("Unable to update emp ledger.");
                //	} elseif($cdata['cbalance']>$cdata['dbalance']) {
                $sql = "UPDATE empledger SET cbalance=cbalance-dbalance,dbalance=0\n\t\t\t\t\tWHERE empid='{$empid}' AND cbalance>dbalance";
                db_exec($sql) or errDie("Unable to update emp ledger.");
                //	}
                //}
            }
        }
    }
    if (PRD_STATE == "py") {
        $audit_db = YR_NAME . "_audit";
        $actyear = PYR_NAME;
    } else {
        $audit_db = "audit";
        $actyear = YR_NAME;
    }
    db_conn($audit_db);
    if ($type == "d") {
        $sql = "INSERT INTO " . $PRD_NAME . "_empledger(empid, contra, edate,sdate, ref, descript, debit,\n\t\t\t\tdbalance, cbalance, div, actyear)\n\t\t\tVALUES('{$empid}', '{$contra}', '{$date}','{$edate}', '{$ref}', '{$details}', '{$amount}',\n\t\t\t\t'{$bal['dbalance']}', '{$bal['cbalance']}', '" . USER_DIV . "', '{$actyear}')";
    } else {
        $sql = "INSERT INTO " . $PRD_NAME . "_empledger(empid, contra, edate,sdate, ref, descript, credit,\n\t\t\t\tdbalance, cbalance, div, actyear)\n\t\t\tVALUES('{$empid}', '{$contra}', '{$date}','{$edate}', '{$ref}', '{$details}', '{$amount}',\n\t\t\t\t'{$bal['dbalance']}', '{$bal['cbalance']}', '" . USER_DIV . "', '{$actyear}')";
    }
    db_exec($sql) or errDie("Unable to insert aduit");
}
/**
 * creates an inventory ledger entry
 *
 * @param int $stkid stock id
 * @param string $stkcod stock code
 * @param string $stkdes stock description
 * @param char $trantype value must be "d" | "c" - debit/credit
 * @param string $edate 
 * @param int $qty
 * @param float $csamt cost amount
 * @param string $details entry details
 */
function stockrec($stkid, $stkcod, $stkdes, $trantype, $edate, $qty, $csamt, $details, $dobal = TRUE)
{
    list($PRD_DB, $PRD_NAME) = getPRD($edate);
    list($CUR_PRD_DB, $CUR_PRD_NAME) = getPRD();
    if ($trantype != 'dt') {
        $csamt = $csamt * -1;
        $qty = $qty * -1;
    }
    # Get balances
    $idRs = get($PRD_DB, "max(id)", "stkledger", "stkid", $stkid);
    $id = pg_fetch_array($idRs);
    if ($id['max'] != 0) {
        $balRs = get($PRD_DB, "balance,bqty", "stkledger", "id", $id['max']);
        $bal = pg_fetch_array($balRs);
        $bal['balance'] += $csamt;
        $bal['bqty'] += $qty;
    } else {
        $balRs = get("cubit", "csamt as balance, units as bqty", "stock", "stkid", $stkid);
        $bal = pg_fetch_array($balRs);
    }
    db_conn($PRD_DB);
    $sql = "INSERT INTO stkledger(stkid, stkcod, stkdes, trantype, edate, qty, csamt, balance,\n\t\t\tbqty, details, div,yrdb)\n\t\tVALUES('{$stkid}', '{$stkcod}', '{$stkdes}', '{$trantype}', '{$edate}', '{$qty}', '{$csamt}',\n\t\t\t'{$bal['balance']}', '{$bal['bqty']}', '{$details}', '" . USER_DIV . "', '" . YR_DB . "')";
    $recRslt = db_exec($sql);
    global $PRDMON, $MONPRD;
    for ($iPRD = $MONPRD[$PRD_DB] + 1; $iPRD <= 12; ++$iPRD) {
        db_conn($PRDMON[$iPRD]);
        $sql = "UPDATE stkledger SET balance=balance+'{$csamt}',bqty=bqty+'{$qty}'\n\t\t \t \tWHERE stkid='{$stkid}' AND yrdb='" . YR_DB . "'";
        $Ri = db_exec($sql) or errDie("Unable to update stockledeger.");
        if ($dobal) {
            if (pg_affected_rows($Ri) <= 0) {
                $sql = "INSERT INTO stkledger(stkid, stkcod, stkdes, trantype, edate, qty,\n\t\t\t\t\t\tcsamt, balance, bqty, details, div,yrdb)\n\t\t\t\t\tVALUES('{$stkid}', '{$stkcod}', 'Balance', '{$trantype}', '{$edate}', '{$qty}',\n\t\t\t\t\t\t'{$csamt}', '{$bal['balance']}', '{$bal['bqty']}', '{$details}',\n\t\t\t\t\t\t'" . USER_DIV . "', '" . YR_DB . "')";
                $recRslt = db_exec($sql);
            }
        }
    }
}