PHP Classes

File: exercise/milkco/InvoiceDetails.php

Recommend this page to a friend!
  Packages of Jorge Castro   Chaos Machine One   exercise/milkco/InvoiceDetails.php   Download  
File: exercise/milkco/InvoiceDetails.php
Role: Example script
Content type: text/plain
Description: Example script
Class: Chaos Machine One
Generate random data that obeys to formulas
Author: By
Last change:
Date: 8 months ago
Size: 2,695 bytes
 

Contents

Class file image Download
<?php
use eftec\chaosmachineone\ChaosMachineOne;

include
'common.php';

@
set_time_limit(2000);

/*
  * SET @i=0;
UPDATE Invoices SET idInvoice=(@i:=@i+1);
  */

//$db->from('invoicedetails')->where('1=1')->delete();

$invoices=$db->select('idinvoice,year(creationdate) year,month(creationdate) month')->from('invoices')->toList();


foreach(
$invoices as $kounter=>$inv) {
   
$invoice=$inv['idinvoice'];
   
$yearinflation=($inv['year']-2006)*5/100; // %5 annual
   
$month=($inv['month']); // used to determine a trend.

   
$chaos = new ChaosMachineOne(123);
   
$empnu = $chaos->random(1, 7, 1, 50, 1); // from 1 to 7 invoices details per invoice


   
$chaos->table('InvoiceDetails', $empnu)
        ->
setDb($db)
        ->
setFormat('refcodeformat',['{{randomnumber}}'=>1,''=>99])
        ->
field('idInvoice', 'int', 'database')
        ->
field('idInvoiceDetail', 'int', 'identity', 0)
        ->
field('lastUpdate', 'datetime', 'database', new DateTime('now'))
        ->
field('quantity', 'decimal', 'database')
        ->
field('refCode', 'string', 'database', '', 0, 50)
        ->
field('idProduct', 'int', 'database')
        ->
field('unitPrice', 'decimal', 'database')
        ->
field('keyproduct','int','local')
        ->
field('randomnumber','int','local')
        ->
field('invoicemonth','int','local',$month) // it is calculated to mark some trends (more purchased during some months)
        //->setArrayFromDBTable('array_idInvoice', 'Invoices', 'idInvoice')
       
->setArrayFromDBTable2('array_product','array_productprice', 'Products','IdProduct','unitprice','leftbias')
        ->
gen('when always set randomnumber.value=random(5000,99999)')
        ->
gen('when always set keyproduct.value=randomArrayKey("array_product")') /** @see \eftec\chaosmachineone\ChaosMachineOne::randomArrayKey **/
       
->gen('when always set idInvoice.value='.$invoice)
        ->
gen('when always set idProduct.value=getArray("array_product",keyproduct.value)')
        ->
gen('when always set unitPrice.value=getArray("array_productprice",keyproduct.value,15)*$yearinflation')
        ->
gen('when always set lastUpdate.speed=1')
        ->
gen('when invoicemonth.value>=4 and invoicemonth.value<=8 set quantity.value=random(1,5,1,50,1) else quantity.value=random(1,10,1,30,30)')
        ->
gen('when always set refCode.value=randomformat("refcodeformat")')

        ->
setInsert(true)
       
/*->showTable([
            'idInvoice',
            'idInvoiceDetail',
            'lastUpdate',
            'quantity',
            'refCode',
            'idProduct',
            'unitPrice'
        ], true)*/
       
->run(true);
    echo
"<h1>$invoice $kounter of ".count($invoices)." : $empnu</h1>";
}