qq| o.closed, o.delivered, o.quonumber, o.cusordnumber, o.shippingpoint, o.shipvia, | .
qq| o.transaction_description, | .
qq| o.marge_total, o.marge_percent, | .
+ qq| o.exchangerate, | .
qq| o.itime::DATE AS insertdate, | .
+ qq| o.intnotes, | .
qq| department.description as department, | .
- qq| ex.$rate AS exchangerate, | .
+ qq| ex.$rate AS daily_exchangerate, | .
qq| pt.description AS payment_terms, | .
qq| pr.projectnumber AS globalprojectnumber, | .
qq| e.name AS employee, s.name AS salesman, | .
push @values, conv_date($form->{expected_billing_date_to});
}
+ if ($form->{intnotes}) {
+ $query .= qq| AND o.intnotes ILIKE ?|;
+ push(@values, like($form->{intnotes}));
+ }
+
if ($form->{parts_partnumber}) {
$query .= <<SQL;
AND EXISTS (
"taxzone" => "tz.description",
"payment_terms" => "pt.description",
"department" => "department.description",
+ "intnotes" => "o.intnotes",
);
if ($form->{sort} && grep($form->{sort}, keys(%allowed_sort_columns))) {
$sortorder = $allowed_sort_columns{$form->{sort}} . " ${sortdir}" . ", o.itime ${sortdir}";
$ref->{remaining_amount} = $ref->{amount} - $ref->{billed_amount};
$ref->{remaining_netamount} = $ref->{netamount} - $ref->{billed_netamount};
}
- $ref->{exchangerate} = 1 unless $ref->{exchangerate};
+ $ref->{exchangerate} ||= $ref->{daily_exchangerate};
+ $ref->{exchangerate} ||= 1;
push @{ $form->{OE} }, $ref if $ref->{id} != $id{ $ref->{id} };
$id{ $ref->{id} } = $ref->{id};
}
);
$new_project->save;
$form->{"globalproject_id"} = $new_project->id;
- };
+ }
CVar->get_non_editable_ic_cvars(form => $form,
dbh => $dbh,
$query =
qq|UPDATE oe SET
ordnumber = ?, quonumber = ?, cusordnumber = ?, transdate = ?, vendor_id = ?,
- customer_id = ?, amount = ?, netamount = ?, reqdate = ?, taxincluded = ?,
+ customer_id = ?, amount = ?, netamount = ?, reqdate = ?, tax_point = ?, taxincluded = ?,
shippingpoint = ?, shipvia = ?, notes = ?, intnotes = ?, currency_id = (SELECT id FROM currencies WHERE name=?), closed = ?,
delivered = ?, proforma = ?, quotation = ?, department_id = ?, language_id = ?,
taxzone_id = ?, shipto_id = ?, payment_id = ?, delivery_vendor_id = ?, delivery_customer_id = ?,delivery_term_id = ?,
@values = ($form->{ordnumber} || '', $form->{quonumber},
$form->{cusordnumber}, conv_date($form->{transdate}),
conv_i($form->{vendor_id}), conv_i($form->{customer_id}),
- $amount, $netamount, conv_date($reqdate),
+ $amount, $netamount, conv_date($reqdate), conv_date($form->{tax_point}),
$form->{taxincluded} ? 't' : 'f', $form->{shippingpoint},
$form->{shipvia}, $restricter->process($form->{notes}), $form->{intnotes},
$form->{currency}, $form->{closed} ? 't' : 'f',
if (!$form->{id}) {
my $extra_days = $form->{type} eq 'sales_quotation' ? $::instance_conf->get_reqdate_interval :
$form->{type} eq 'sales_order' ? $::instance_conf->get_delivery_date_interval : 1;
- $form->{reqdate} = DateTime->today_local->next_workday(extra_days => $extra_days)->to_kivitendo;
+ if ( ($form->{type} eq 'sales_order' && !$::instance_conf->get_deliverydate_on)
+ || ($form->{type} eq 'sales_quotation' && !$::instance_conf->get_reqdate_on)) {
+ $form->{reqdate} = '';
+ } else {
+ $form->{reqdate} = DateTime->today_local->next_workday(extra_days => $extra_days)->to_kivitendo;
+ }
$form->{transdate} = DateTime->today_local->to_kivitendo;
}
o.taxincluded, o.shippingpoint, o.shipvia, o.notes, o.intnotes,
(SELECT cu.name FROM currencies cu WHERE cu.id=o.currency_id) AS currency, e.name AS employee, o.employee_id, o.salesman_id,
o.${vc}_id, cv.name AS ${vc}, o.amount AS invtotal,
- o.closed, o.reqdate, o.quonumber, o.department_id, o.cusordnumber,
+ o.closed, o.reqdate, o.tax_point, o.quonumber, o.department_id, o.cusordnumber,
o.mtime, o.itime,
d.description AS department, o.payment_id, o.language_id, o.taxzone_id,
o.delivery_customer_id, o.delivery_vendor_id, o.proforma, o.shipto_id,
map { $form->{$_} =~ s/ +$//g } qw(printed emailed queued);
} # if !@ids
- my $transdate = $form->{transdate} ? $dbh->quote($form->{transdate}) : "current_date";
+ my $transdate = $form->{tax_point} ? $dbh->quote($form->{tax_point}) : $form->{transdate} ? $dbh->quote($form->{transdate}) : "current_date";
$form->{taxzone_id} = 0 unless ($form->{taxzone_id});
unshift @values, ($form->{taxzone_id}) x 2;
partnotes serialnumber reqdate sellprice sellprice_nofmt listprice listprice_nofmt netprice netprice_nofmt
discount discount_nofmt p_discount discount_sub discount_sub_nofmt nodiscount_sub nodiscount_sub_nofmt
linetotal linetotal_nofmt nodiscount_linetotal nodiscount_linetotal_nofmt tax_rate projectnumber projectdescription
- price_factor price_factor_name partsgroup weight weight_nofmt lineweight lineweight_nofmt);
+ price_factor price_factor_name partsgroup weight weight_nofmt lineweight lineweight_nofmt optional);
push @arrays, map { "ic_cvar_$_->{name}" } @{ $ic_cvar_configs };
push @arrays, map { "project_cvar_$_->{name}" } @{ $project_cvar_configs };
push @{ $form->{TEMPLATE_ARRAYS}->{price_factor} }, $price_factor->{formatted_factor};
push @{ $form->{TEMPLATE_ARRAYS}->{price_factor_name} }, $price_factor->{description};
push @{ $form->{TEMPLATE_ARRAYS}->{partsgroup} }, $form->{"partsgroup_$i"};
+ push @{ $form->{TEMPLATE_ARRAYS}->{optional} }, $form->{"optional_$i"};
my $sellprice = $form->parse_amount($myconfig, $form->{"sellprice_$i"});
my ($dec) = ($sellprice =~ /\.(\d+)/);
$form->{non_separate_subtotal} += $linetotal;
}
- $form->{ordtotal} += $linetotal;
+ $form->{ordtotal} += $linetotal unless $form->{"optional_$i"};
$form->{nodiscount_total} += $nodiscount_linetotal;
$form->{discount_total} += $discount;
map { $taxrate += $form->{"${_}_rate"} } split(/ /, $form->{"taxaccounts_$i"});
- if ($form->{taxincluded}) {
+ unless ($form->{"optional_$i"}) {
+ if ($form->{taxincluded}) {
- # calculate tax
- $taxamount = $linetotal * $taxrate / (1 + $taxrate);
- $taxbase = $linetotal / (1 + $taxrate);
- } else {
- $taxamount = $linetotal * $taxrate;
- $taxbase = $linetotal;
+ # calculate tax
+ $taxamount = $linetotal * $taxrate / (1 + $taxrate);
+ $taxbase = $linetotal / (1 + $taxrate);
+ } else {
+ $taxamount = $linetotal * $taxrate;
+ $taxbase = $linetotal;
+ }
}
if ($taxamount != 0) {