summaryrefslogtreecommitdiff
path: root/doc/tips/Importing_posts_from_Wordpress
diff options
context:
space:
mode:
Diffstat (limited to 'doc/tips/Importing_posts_from_Wordpress')
0 files changed, 0 insertions, 0 deletions
$self, $myconfig, $form) = @_;
  • # connect to database
  • my $dbh = $form->dbconnect($myconfig);
  • my $query;
  • my $null;
  • my $var;
  • my $ordnumber = 'ordnumber';
  • my $quotation = '0';
  • my $department;
  • my $rate = ($form->{vc} eq 'customer') ? 'buy' : 'sell';
  • ($form->{transdatefrom}, $form->{transdateto}) = $form->from_to($form->{year}, $form->{month}, $form->{interval}) if $form->{year} && $form->{month};
  • if ($form->{type} =~ /_quotation$/) {
  • $quotation = '1';
  • $ordnumber = 'quonumber';
  • }
  • my $number = $form->like(lc $form->{$ordnumber});
  • my $name = $form->like(lc $form->{$form->{vc}});
  • for (qw(department employee)) {
  • if ($form->{$_}) {
  • ($null, $var) = split /--/, $form->{$_};
  • $department .= " AND o.${_}_id = $var";
  • }
  • }
  • my $query = qq|SELECT o.id, o.ordnumber, o.transdate, o.reqdate,
  • o.amount, ct.name, o.netamount, o.$form->{vc}_id,
  • ex.$rate AS exchangerate,
  • o.closed, o.quonumber, o.shippingpoint, o.shipvia,
  • e.name AS employee, m.name AS manager, o.curr, o.ponumber
  • FROM oe o
  • JOIN $form->{vc} ct ON (o.$form->{vc}_id = ct.id)
  • LEFT JOIN employee e ON (o.employee_id = e.id)
  • LEFT JOIN employee m ON (e.managerid = m.id)
  • LEFT JOIN exchangerate ex ON (ex.curr = o.curr
  • AND ex.transdate = o.transdate)
  • WHERE o.quotation = '$quotation'
  • $department|;
  • my %ordinal = ( id => 1,
  • ordnumber => 2,
  • transdate => 3,
  • reqdate => 4,
  • name => 6,
  • quonumber => 11,
  • shipvia => 13,
  • employee => 14,
  • manager => 15,
  • curr => 16,
  • ponumber => 17
  • );
  • my @a = (transdate, $ordnumber, name);
  • push @a, "employee" if $form->{l_employee};
  • if ($form->{type} !~ /(ship|receive)_order/) {
  • push @a, "manager" if $form->{l_manager};
  • }
  • my $sortorder = $form->sort_order(\@a, \%ordinal);
  • # build query if type eq (ship|receive)_order
  • if ($form->{type} =~ /(ship|receive)_order/) {
  • my ($warehouse, $warehouse_id) = split /--/, $form->{warehouse};
  • $query = qq|SELECT DISTINCT o.id, o.ordnumber, o.transdate,
  • o.reqdate, o.amount, ct.name, o.netamount, o.$form->{vc}_id,
  • ex.$rate AS exchangerate,
  • o.closed, o.quonumber, o.shippingpoint, o.shipvia,
  • e.name AS employee, o.curr, o.ponumber
  • FROM oe o
  • JOIN $form->{vc} ct ON (o.$form->{vc}_id = ct.id)
  • JOIN orderitems oi ON (oi.trans_id = o.id)
  • JOIN parts p ON (p.id = oi.parts_id)|;
  • if ($warehouse_id && $form->{type} eq 'ship_order') {
  • $query .= qq|
  • JOIN inventory i ON (oi.parts_id = i.parts_id)
  • |;
  • }
  • $query .= qq|
  • LEFT JOIN employee e ON (o.employee_id = e.id)
  • LEFT JOIN exchangerate ex ON (ex.curr = o.curr
  • AND ex.transdate = o.transdate)
  • WHERE o.quotation = '0'
  • AND (p.inventory_accno_id > 0 OR p.assembly = '1')
  • AND oi.qty != oi.ship
  • $department|;
  • if ($warehouse_id && $form->{type} eq 'ship_order') {
  • $query .= qq|
  • AND i.warehouse_id = $warehouse_id
  • AND ( SELECT SUM(i.qty)
  • FROM inventory i
  • WHERE oi.parts_id = i.parts_id
  • AND i.warehouse_id = $warehouse_id ) > 0
  • |;
  • }
  • }
  • if ($form->{"$form->{vc}_id"}) {
  • $query .= qq| AND o.$form->{vc}_id = $form->{"$form->{vc}_id"}|;
  • } else {
  • if ($form->{$form->{vc}} ne "") {
  • $query .= " AND lower(ct.name) LIKE '$name'";
  • }
  • }
  • if ($form->{$ordnumber} ne "") {
  • $query .= " AND lower($ordnumber) LIKE '$number'";
  • $form->{open} = 1;
  • $form->{closed} = 1;
  • }
  • if ($form->{ponumber} ne "") {
  • $query .= " AND lower(ponumber) LIKE '$form->{ponumber}'";
  • }
  • if (!$form->{open} && !$form->{closed}) {
  • $query .= " AND o.id = 0";
  • } elsif (!($form->{open} && $form->{closed})) {
  • $query .= ($form->{open}) ? " AND o.closed = '0'" : " AND o.closed = '1'";
  • }
  • if ($form->{shipvia} ne "") {
  • $var = $form->like(lc $form->{shipvia});
  • $query .= " AND lower(o.shipvia) LIKE '$var'";
  • }
  • if ($form->{description} ne "") {
  • $var = $form->like(lc $form->{description});
  • $query .= " AND o.id IN (SELECT DISTINCT trans_id
  • FROM orderitems
  • WHERE lower(description) LIKE '$var')";
  • }
  • if ($form->{transdatefrom}) {
  • $query .= " AND o.transdate >= '$form->{transdatefrom}'";
  • }
  • if ($form->{transdateto}) {
  • $query .= " AND o.transdate <= '$form->{transdateto}'";
  • }
  • $query .= " ORDER by $sortorder";
  • my $sth = $dbh->prepare($query);
  • $sth->execute || $form->dberror($query);
  • my %oid = ();
  • while (my $ref = $sth->fetchrow_hashref(NAME_lc)) {
  • $ref->{exchangerate} = 1 unless $ref->{exchangerate};
  • if ($ref->{id} != $oid{id}{$ref->{id}}) {
  • push @{ $form->{OE} }, $ref;
  • $oid{vc}{$ref->{curr}}{$ref->{"$form->{vc}_id"}}++;
  • }
  • $oid{id}{$ref->{id}} = $ref->{id};
  • }
  • $sth->finish;
  • $dbh->disconnect;
  • if ($form->{type} =~ /^consolidate_/) {
  • @a = ();
  • foreach $ref (@{ $form->{OE} }) { push @a, $ref if $oid{vc}{$ref->{curr}}{$ref->{"$form->{vc}_id"}} > 1 }
  • @{ $form->{OE} } = @a;
  • }
  • }
  • sub save {
  • my ($self, $myconfig, $form) = @_;
  • # connect to database, turn off autocommit
  • my $dbh = $form->dbconnect_noauto($myconfig);
  • my $query;
  • my $sth;
  • my $null;
  • my $exchangerate = 0;
  • ($null, $form->{employee_id}) = split /--/, $form->{employee};
  • if (! $form->{employee_id}) {
  • ($form->{employee}, $form->{employee_id}) = $form->get_employee($dbh);
  • $form->{employee} = "$form->{employee}--$form->{employee_id}";
  • }
  • my $ml = ($form->{type} eq 'sales_order') ? 1 : -1;
  • $query = qq|SELECT p.assembly, p.project_id
  • FROM parts p
  • WHERE p.id = ?|;
  • my $pth = $dbh->prepare($query) || $form->dberror($query);
  • if ($form->{id}) {
  • $query = qq|SELECT id FROM oe
  • WHERE id = $form->{id}|;
  • if ($dbh->selectrow_array($query)) {
  • &adj_onhand($dbh, $form, $ml) if $form->{type} =~ /_order$/;
  • $query = qq|DELETE FROM orderitems
  • WHERE trans_id = $form->{id}|;
  • $dbh->do($query) || $form->dberror($query);
  • $query = qq|DELETE FROM shipto
  • WHERE trans_id = $form->{id}|;
  • $dbh->do($query) || $form->dberror($query);
  • } else {
  • $query = qq|INSERT INTO oe (id)
  • VALUES ($form->{id})|;
  • $dbh->do($query) || $form->dberror($query);
  • }
  • }
  • if (! $form->{id}) {
  • my $uid = localtime;
  • $uid .= "$$";
  • $query = qq|INSERT INTO oe (ordnumber, employee_id)
  • VALUES ('$uid', $form->{employee_id})|;
  • $dbh->do($query) || $form->dberror($query);
  • $query = qq|SELECT id FROM oe
  • WHERE ordnumber = '$uid'|;
  • $sth = $dbh->prepare($query);
  • $sth->execute || $form->dberror($query);
  • ($form->{id}) = $sth->fetchrow_array;
  • $sth->finish;
  • }
  • my $amount;
  • my $linetotal;
  • my $discount;
  • my $project_id;
  • my $taxrate;
  • my $taxamount;
  • my $fxsellprice;
  • my %taxbase;
  • my @taxaccounts;
  • my %taxaccounts;
  • my $netamount = 0;
  • for my $i (1 .. $form->{rowcount}) {
  • for (qw(qty ship)) { $form->{"${_}_$i"} = $form->parse_amount($myconfig, $form->{"${_}_$i"}) }
  • $form->{"discount_$i"} = $form->parse_amount($myconfig, $form->{"discount_$i"}) / 100;
  • $form->{"sellprice_$i"} = $form->parse_amount($myconfig, $form->{"sellprice_$i"});
  • if ($form->{"qty_$i"}) {
  • $pth->execute($form->{"id_$i"});
  • $ref = $pth->fetchrow_hashref(NAME_lc);
  • for (keys %$ref) { $form->{"${_}_$i"} = $ref->{$_} }
  • $pth->finish;
  • $fxsellprice = $form->{"sellprice_$i"};