Example #1
0
function mkTTorder($id, $evids, $trans_id)
{
    $tt = getOneTT($id, $false);
    $vendcust = $tt['tab'] == 'C' ? 'customer' : 'vendor';
    //Steuerzone ermitteln (0-3)
    $sql = "SELECT taxzone_id FROM " . $vendcust . " WHERE id = " . $tt["fid"];
    $rs = $_SESSION['db']->getOne($sql);
    $tzid = $rs["taxzone_id"];
    $TAX = getTax($tzid);
    //Artikeldaten holen
    $sql = "SELECT * FROM parts WHERE partnumber = '" . $_SESSION['ttpart'] . "'";
    $part = $_SESSION['db']->getOne($sql);
    $partid = $part["id"];
    $sellprice = $part["sellprice"];
    $unit = $part["unit"];
    //Steuersatz ermitteln
    $tax = $TAX[$part["buchungsgruppen_id"]];
    $curr = getCurr(True);
    //Events holen
    $events = getTTEvents($id, false, $evids, True);
    if (!$events) {
        return ".:nothing to do:.";
    }
    if (!$evids) {
        $evids = 'and t.id in (';
        foreach ($events as $row) {
            $tmp[] = $row['id'];
        }
        $evids .= implode(',', $tmp) . ') ';
    }
    $_SESSION['db']->begin();
    if ($trans_id < 1) {
        //Auftrag erzeugen
        $sonumber = $tt['tab'] == 'C' ? nextNumber("sonumber") : nextNumber("ponumber");
        if (!$sonumber) {
            return ".:error:.";
        }
        $sql = "INSERT INTO oe (notes,transaction_description,ordnumber," . $vendcust . "_id,taxincluded,currency_id) ";
        $sql .= "VALUES ('" . $tt["ttdescription"] . "','" . $tt["ttname"] . "',{$sonumber},'" . $tt["fid"] . "','f',";
        $sql .= "coalesce((SELECT currency_id FROM " . $vendcust . " WHERE id = " . $tt['fid'] . "),{$curr}))";
        $rc = $_SESSION['db']->query($sql, "newOE");
        if (!$rc) {
            $sql = "DELETE FROM oe WHERE ordnumber = '{$sonumber}'";
            $rc = $_SESSION['db']->query($sql, "delOE");
            return ".:error:. 0";
        }
        $sql = "SELECT id FROM oe WHERE  ordnumber = '{$sonumber}'";
        $rs = $_SESSION['db']->getOne($sql);
        $trans_id = $rs["id"];
        if ($trans_id <= 0) {
            $sql = "DELETE FROM oe WHERE ordnumber = '{$sonumber}'";
            $rc = $_SESSION['db']->query($sql, "delOE");
            return ".:error:. 0";
        }
        $netamount = 0;
    } else {
        $sql = "SELECT * from oe WHERE id = " . $trans_id;
        $rc = $_SESSION['db']->getOne($sql, '');
        if (!$rc) {
            return ".:error:. 00";
        }
        $netamount = $rc['netamount'];
    }
    //$sql_i = 'INSERT INTO orderitems (trans_id, parts_id, description, qty, sellprice, unit, ship, discount,serialnumber,reqdate) values (';
    $fields = array('trans_id', 'parts_id', 'description', 'qty', 'sellprice', 'unit', 'ship', 'discount', 'serialnumber', 'reqdate');
    foreach ($events as $row) {
        if ($row["ttstop"] == "") {
            $_SESSION['db']->rollback();
            return ".:close event:.";
        }
        $t1 = strtotime($row["ttstart"]);
        $t2 = strtotime($row["ttstop"]);
        //Minuten
        $diff = floor(($t2 - $t1) / 60);
        //Abrechnungseinheiten
        $time = floor($diff / $_SESSION['tttime']);
        //Ist der Rest über der Tolleranz
        if ($diff - $_SESSION['tttime'] * $time > $_SESSION['ttround']) {
            $time++;
        }
        $price = $time * $sellprice;
        //Orderitemseintrag
        $rqdate = substr($row['ttstop'], 0, 10);
        $values = array($trans_id, $partid, $row["ttevent"], $time, $sellprice, $unit, 0, 0, $diff, $rqdate);
        //$sql = $sql_i."$trans_id,$partid,'".$row["ttevent"]."',$time,$sellprice,'$unit',0,0,'$diff','".substr($row['ttstop'],0,10)."')";
        //$rc = $_SESSION['db']->query($sql);
        $rc = $_SESSION['db']->insert('orderitems', $fields, $values);
        if (!$rc) {
            $_SESSION['db']->rollback();
            return ".:error:. 1";
        }
        $netamount += $price;
        $amount += $price * $tax;
        $parts = getTTparts($row["id"]);
        if ($parts) {
            foreach ($parts as $part) {
                $values = array($trans_id, $part['parts_id'], $part['parts_txt'], $part['qty'], $part['sellprice'], $part['unit'], 0, 0, Null, $rqdate);
                $rc = $_SESSION['db']->insert('orderitems', $fields, $values);
                if (!$rc) {
                    $_SESSION['db']->rollback();
                    return ".:error:. 2";
                }
                $netamount += $part['qty'] * $part['sellprice'];
                $amount += $part['qty'] * $part['sellprice'] * $TAX[$part['buchungsgruppen_id']];
            }
        }
    }
    //OE-Eintrag updaten
    $nun = date('Y-m-d');
    //$amount = $netamount + $mwst;
    $fields = array('transdate', 'amount', 'netamount', 'reqdate', 'notes', 'employee_id');
    $values = array($nun, $amount, $netamount, $nun, $tt["ttdescription"], $_SESSION["loginCRM"]);
    $rc = $_SESSION['db']->update('oe', $fields, $values, 'id = ' . $trans_id);
    if (!$rc) {
        $_SESSION['db']->rollback();
        return ".:error:. 2";
    } else {
        //Events als Abgerechnet markieren.
        $sql = "UPDATE tt_event t set cleared = {$trans_id} where t.ttid = {$id} {$evids}";
        $rc = $_SESSION['db']->query($sql);
        $_SESSION['db']->commit();
        return ".:ok:.";
    }
}
Example #2
0
                                        $data = getOneTT($_POST["tid"]);
                                        $data["msg"] = $msg;
                                    } else {
                                        $data["msg"] = ".:missing:. .:customer:.";
                                    }
                                } else {
                                    $data = getOneTT($_POST["tid"]);
                                    $data["msg"] = ".:clrok:.";
                                }
                            } else {
                                unset($data);
                                if ($data['fid']) {
                                    $curr = getCurrCompany($data['fid'], $data['tab']);
                                    $data["cur"] = $curr['name'];
                                } else {
                                    $data["cur"] = getCurr();
                                }
                                $data["active"] = "t";
                            }
                        }
                    }
                }
            }
        }
    }
}
if ($data["events"]) {
    $delete = False;
}
if ($data["fid"]) {
    $data["backlink"] = "firma1.php?Q=" . $data["tab"] . "&id=" . $data["fid"];