Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 5b60c0df

Von Moritz Bunkus vor mehr als 17 Jahren hinzugefügt

  • ID 5b60c0df87a1150394dddfdf5c4b0c130a9e004a
  • Vorgänger f6e5b55a
  • Nachfolger 31b25bed

Große Codeteile entfernt, die zur Vorbereitung von Mehrlagerfähigkeit in SQL-Ledger gedient haben und nie benutzt wurden.

Unterschiede anzeigen:

SL/OE.pm
88 88
	         FROM oe o
89 89
	         JOIN $form->{vc} ct ON (o.$form->{vc}_id = ct.id)
90 90
		 JOIN orderitems oi ON (oi.trans_id = o.id)
91
		 JOIN parts p ON (p.id = oi.parts_id)|;
92

  
93
    if ($warehouse_id && $form->{type} eq 'ship_order') {
94
      $query .= qq|
95
	         JOIN inventory i ON (oi.parts_id = i.parts_id)
96
		 |;
97
    }
98

  
99
    $query .= qq|
91
		 JOIN parts p ON (p.id = oi.parts_id)
100 92
	         LEFT JOIN employee e ON (o.employee_id = e.id)
101 93
	         LEFT JOIN exchangerate ex ON (ex.curr = o.curr
102 94
		                               AND ex.transdate = o.transdate)
......
508 500

  
509 501
    # adjust onhand
510 502
    &adj_onhand($dbh, $form, $ml * -1);
511
    &adj_inventory($dbh, $myconfig, $form);
512 503
  }
513 504

  
514 505
  my $rc = $dbh->commit;
......
1254 1245
  return $_;
1255 1246
}
1256 1247

  
1257
sub get_warehouses {
1258
  $main::lxdebug->enter_sub();
1259

  
1260
  my ($self, $myconfig, $form) = @_;
1261

  
1262
  my $dbh = $form->dbconnect($myconfig);
1263

  
1264
  # setup warehouses
1265
  my $query = qq|SELECT id, description
1266
                 FROM warehouse|;
1267

  
1268
  my $sth = $dbh->prepare($query);
1269
  $sth->execute || $form->dberror($query);
1270

  
1271
  while (my $ref = $sth->fetchrow_hashref(NAME_lc)) {
1272
    push @{ $form->{all_warehouses} }, $ref;
1273
  }
1274
  $sth->finish;
1275

  
1276
  $dbh->disconnect;
1277

  
1278
  $main::lxdebug->leave_sub();
1279
}
1280

  
1281
sub save_inventory {
1282
  $main::lxdebug->enter_sub();
1283

  
1284
  my ($self, $myconfig, $form) = @_;
1285

  
1286
  my ($null, $warehouse_id) = split /--/, $form->{warehouse};
1287
  $warehouse_id *= 1;
1288

  
1289
  my $employee_id;
1290
  ($null, $employee_id) = split /--/, $form->{employee};
1291

  
1292
  my $ml = ($form->{type} eq 'ship_order') ? -1 : 1;
1293

  
1294
  my $dbh = $form->dbconnect_noauto($myconfig);
1295
  my $sth;
1296
  my $wth;
1297
  my $serialnumber;
1298
  my $ship;
1299

  
1300
  $query = qq|SELECT o.serialnumber, o.ship
1301
              FROM orderitems o
1302
              WHERE o.trans_id = ?
1303
	      AND o.id = ?
1304
	      FOR UPDATE|;
1305
  $sth = $dbh->prepare($query) || $form->dberror($query);
1306

  
1307
  $query = qq|SELECT sum(i.qty)
1308
              FROM inventory i
1309
	      WHERE i.parts_id = ?
1310
	      AND i.warehouse_id = ?|;
1311
  $wth = $dbh->prepare($query) || $form->dberror($query);
1312

  
1313
  for my $i (1 .. $form->{rowcount} - 1) {
1314

  
1315
    $ship =
1316
      (abs($form->{"ship_$i"}) > abs($form->{"qty_$i"}))
1317
      ? $form->{"qty_$i"}
1318
      : $form->{"ship_$i"};
1319

  
1320
    if ($warehouse_id && $form->{type} eq 'ship_order') {
1321

  
1322
      $wth->execute($form->{"id_$i"}, $warehouse_id) || $form->dberror;
1323

  
1324
      ($qty) = $wth->fetchrow_array;
1325
      $wth->finish;
1326

  
1327
      if ($ship > $qty) {
1328
        $ship = $qty;
1329
      }
1330
    }
1331

  
1332
    if ($ship != 0) {
1333

  
1334
      $ship *= $ml;
1335
      $query = qq|INSERT INTO inventory (parts_id, warehouse_id,
1336
                  qty, oe_id, orderitems_id, shippingdate, employee_id)
1337
                  VALUES ($form->{"id_$i"}, $warehouse_id,
1338
		  $ship, $form->{"id"},
1339
		  $form->{"orderitems_id_$i"}, '$form->{shippingdate}',
1340
		  $employee_id)|;
1341
      $dbh->do($query) || $form->dberror($query);
1342

  
1343
      # add serialnumber, ship to orderitems
1344
      $sth->execute($form->{id}, $form->{"orderitems_id_$i"})
1345
        || $form->dberror;
1346
      ($serialnumber, $ship) = $sth->fetchrow_array;
1347
      $sth->finish;
1348

  
1349
      $serialnumber .= " " if $serialnumber;
1350
      $serialnumber .= qq|$form->{"serialnumber_$i"}|;
1351
      $ship += $form->{"ship_$i"};
1352

  
1353
      $query = qq|UPDATE orderitems SET
1354
                  serialnumber = '$serialnumber',
1355
		  ship = $ship
1356
		  WHERE trans_id = $form->{id}
1357
		  AND id = $form->{"orderitems_id_$i"}|;
1358
      $dbh->do($query) || $form->dberror($query);
1359

  
1360
      # update order with ship via
1361
      $query = qq|UPDATE oe SET
1362
                  shippingpoint = '$form->{shippingpoint}',
1363
                  shipvia = '$form->{shipvia}'
1364
		  WHERE id = $form->{id}|;
1365
      $dbh->do($query) || $form->dberror($query);
1366

  
1367
      # update onhand for parts
1368
      $form->update_balance($dbh, "parts", "onhand",
1369
                            qq|id = $form->{"id_$i"}|,
1370
                            $form->{"ship_$i"} * $ml);
1371

  
1372
    }
1373
  }
1374

  
1375
  my $rc = $dbh->commit;
1376
  $dbh->disconnect;
1377

  
1378
  $main::lxdebug->leave_sub();
1379

  
1380
  return $rc;
1381
}
1382

  
1383 1248
sub adj_onhand {
1384 1249
  $main::lxdebug->enter_sub();
1385 1250

  
......
1458 1323
  $main::lxdebug->leave_sub();
1459 1324
}
1460 1325

  
1461
sub adj_inventory {
1462
  $main::lxdebug->enter_sub();
1463

  
1464
  my ($dbh, $myconfig, $form) = @_;
1465

  
1466
  my %oid = ('Pg'     => 'oid',
1467
             'Oracle' => 'rowid');
1468

  
1469
  # increase/reduce qty in inventory table
1470
  my $query = qq|SELECT oi.id, oi.parts_id, oi.ship
1471
                 FROM orderitems oi
1472
                 WHERE oi.trans_id = $form->{id}|;
1473
  my $sth = $dbh->prepare($query);
1474
  $sth->execute || $form->dberror($query);
1475

  
1476
  $query = qq|SELECT $oid{$myconfig->{dbdriver}} AS oid, qty,
1477
                     (SELECT SUM(qty) FROM inventory
1478
                      WHERE oe_id = $form->{id}
1479
		      AND orderitems_id = ?) AS total
1480
	      FROM inventory
1481
              WHERE oe_id = $form->{id}
1482
	      AND orderitems_id = ?|;
1483
  my $ith = $dbh->prepare($query) || $form->dberror($query);
1484

  
1485
  my $qty;
1486
  my $ml = ($form->{type} =~ /(ship|sales)_order/) ? -1 : 1;
1487

  
1488
  while (my $ref = $sth->fetchrow_hashref(NAME_lc)) {
1489

  
1490
    $ith->execute($ref->{id}, $ref->{id}) || $form->dberror($query);
1491

  
1492
    while (my $inv = $ith->fetchrow_hashref(NAME_lc)) {
1493

  
1494
      if (($qty = (($inv->{total} * $ml) - $ref->{ship})) >= 0) {
1495
        $qty = $inv->{qty} if ($qty > ($inv->{qty} * $ml));
1496

  
1497
        $form->update_balance($dbh, "inventory", "qty",
1498
                              qq|$oid{$myconfig->{dbdriver}} = $inv->{oid}|,
1499
                              $qty * -1 * $ml);
1500
      }
1501
    }
1502
    $ith->finish;
1503

  
1504
  }
1505
  $sth->finish;
1506

  
1507
  # delete inventory entries if qty = 0
1508
  $query = qq|DELETE FROM inventory
1509
              WHERE oe_id = $form->{id}
1510
	      AND qty = 0|;
1511
  $dbh->do($query) || $form->dberror($query);
1512

  
1513
  $main::lxdebug->leave_sub();
1514
}
1515

  
1516
sub get_inventory {
1517
  $main::lxdebug->enter_sub();
1518

  
1519
  my ($self, $myconfig, $form) = @_;
1520

  
1521
  my ($null, $warehouse_id) = split /--/, $form->{warehouse};
1522
  $warehouse_id *= 1;
1523

  
1524
  my $dbh = $form->dbconnect($myconfig);
1525

  
1526
  my $query = qq|SELECT p.id, p.partnumber, p.description, p.onhand,
1527
                 pg.partsgroup
1528
                 FROM parts p
1529
		 LEFT JOIN partsgroup pg ON (p.partsgroup_id = pg.id)
1530
	         WHERE p.onhand > 0|;
1531

  
1532
  if ($form->{partnumber}) {
1533
    $var = $form->like(lc $form->{partnumber});
1534
    $query .= "
1535
                 AND lower(p.partnumber) LIKE '$var'";
1536
  }
1537
  if ($form->{description}) {
1538
    $var = $form->like(lc $form->{description});
1539
    $query .= "
1540
                 AND lower(p.description) LIKE '$var'";
1541
  }
1542
  if ($form->{partsgroup}) {
1543
    $var = $form->like(lc $form->{partsgroup});
1544
    $query .= "
1545
                 AND lower(pg.partsgroup) LIKE '$var'";
1546
  }
1547

  
1548
  $sth = $dbh->prepare($query);
1549
  $sth->execute || $form->dberror($query);
1550

  
1551
  $query = qq|SELECT sum(i.qty), w.description, w.id
1552
              FROM inventory i
1553
	      LEFT JOIN warehouse w ON (w.id = i.warehouse_id)
1554
	      WHERE i.parts_id = ?
1555
	      AND NOT i.warehouse_id = $warehouse_id
1556
	      GROUP BY w.description, w.id|;
1557
  $wth = $dbh->prepare($query) || $form->dberror($query);
1558

  
1559
  while ($ref = $sth->fetchrow_hashref(NAME_lc)) {
1560

  
1561
    $wth->execute($ref->{id}) || $form->dberror;
1562

  
1563
    while (($qty, $warehouse, $warehouse_id) = $wth->fetchrow_array) {
1564
      push @{ $form->{all_inventory} },
1565
        { 'id'           => $ref->{id},
1566
          'partnumber'   => $ref->{partnumber},
1567
          'description'  => $ref->{description},
1568
          'partsgroup'   => $ref->{partsgroup},
1569
          'qty'          => $qty,
1570
          'warehouse_id' => $warehouse_id,
1571
          'warehouse'    => $warehouse }
1572
        if $qty > 0;
1573
    }
1574
    $wth->finish;
1575
  }
1576
  $sth->finish;
1577

  
1578
  $dbh->disconnect;
1579

  
1580
  # sort inventory
1581
  @{ $form->{all_inventory} } =
1582
    sort { $a->{ $form->{sort} } cmp $b->{ $form->{sort} } }
1583
    @{ $form->{all_inventory} };
1584

  
1585
  $main::lxdebug->leave_sub();
1586

  
1587
  return @{ $form->{all_inventory} };
1588
}
1589

  
1590
sub transfer {
1591
  $main::lxdebug->enter_sub();
1592

  
1593
  my ($self, $myconfig, $form) = @_;
1594

  
1595
  my $dbh = $form->dbconnect_noauto($myconfig);
1596

  
1597
  my $query = qq|INSERT INTO inventory
1598
                 (warehouse_id, parts_id, qty, shippingdate, employee_id)
1599
		 VALUES (?, ?, ?, ?, ?)|;
1600
  $sth = $dbh->prepare($query) || $form->dberror($query);
1601

  
1602
  $form->get_employee($dbh);
1603

  
1604
  my @a = localtime;
1605
  $a[5] += 1900;
1606
  $a[4]++;
1607
  $shippingdate = "$a[5]-$a[4]-$a[3]";
1608

  
1609
  for my $i (1 .. $form->{rowcount}) {
1610
    $qty = $form->parse_amount($myconfig, $form->{"transfer_$i"});
1611

  
1612
    $qty = $form->{"qty_$i"} if ($qty > $form->{"qty_$i"});
1613

  
1614
    if ($qty) {
1615

  
1616
      # to warehouse
1617
      $sth->execute($form->{warehouse_id}, $form->{"id_$i"}, $qty,
1618
                    $shippingdate, $form->{employee_id})
1619
        || $form->dberror;
1620

  
1621
      $sth->finish;
1622

  
1623
      # from warehouse
1624
      $sth->execute($form->{"warehouse_id_$i"},
1625
                    $form->{"id_$i"}, $qty * -1, $shippingdate,
1626
                    $form->{employee_id})
1627
        || $form->dberror;
1628

  
1629
      $sth->finish;
1630
    }
1631
  }
1632

  
1633
  my $rc = $dbh->commit;
1634
  $dbh->disconnect;
1635

  
1636
  $main::lxdebug->leave_sub();
1637

  
1638
  return $rc;
1639
}
1640

  
1641 1326
1;
1642 1327

  
bin/mozilla/ic.pl
3006 3006
      $locale->text(
3007 3007
        "Inventory quantity must be zero before you can set this $form->{item} obsolete!"
3008 3008
      ))
3009
      if ($form->{onhand});
3009
      if ($form->{onhand} * 1);
3010 3010
  }
3011 3011

  
3012 3012
  if (!$form->{buchungsgruppen_id}) {
......
3170 3170
  $lxdebug->leave_sub();
3171 3171
}
3172 3172

  
3173
sub stock_assembly {
3174
  $lxdebug->enter_sub();
3175

  
3176
  $form->{title} = $locale->text('Stock Assembly');
3177

  
3178
  $form->header;
3179

  
3180
  print qq|
3181
<body>
3182

  
3183
<form method=post action=$form->{script}>
3184

  
3185
<table width="100%">
3186
  <tr>
3187
    <th class=listtop>$form->{title}</th>
3188
  </tr>
3189
  <tr height="5"></tr>
3190
  <tr valign=top>
3191
    <td>
3192
      <table>
3193
        <tr>
3194
          <th align="right" nowrap="true">|
3195
    . $locale->text('Part Number') . qq|</th>
3196
          <td><input name=partnumber size=20></td>
3197
          <td>&nbsp;</td>
3198
        </tr>
3199
        <tr>
3200
          <th align="right" nowrap="true">|
3201
    . $locale->text('Part Description') . qq|</th>
3202
          <td><input name=description size=40></td>
3203
        </tr>
3204
      </table>
3205
    </td>
3206
  </tr>
3207
  <tr><td><hr size=3 noshade></td></tr>
3208
</table>
3209

  
3210
<input type=hidden name=path value=$form->{path}>
3211
<input type=hidden name=login value=$form->{login}>
3212
<input type=hidden name=password value=$form->{password}>
3213

  
3214
<input type=hidden name=nextsub value=list_assemblies>
3215

  
3216
<br>
3217
<input class=submit type=submit name=action value="|
3218
    . $locale->text('Continue') . qq|">
3219
</form>
3220

  
3221
</body>
3222
</html>
3223
|;
3224

  
3225
  $lxdebug->leave_sub();
3226
}
3227

  
3228
sub list_assemblies {
3229
  $lxdebug->enter_sub();
3230

  
3231
  IC->retrieve_assemblies(\%myconfig, \%$form);
3232

  
3233
  $column_header{partnumber} =
3234
    qq|<th class=listheading>| . $locale->text('Part Number') . qq|</th>|;
3235
  $column_header{description} =
3236
    qq|<th class=listheading>| . $locale->text('Part Description') . qq|</th>|;
3237
  $column_header{bin} =
3238
    qq|<th class=listheading>| . $locale->text('Bin') . qq|</th>|;
3239
  $column_header{onhand} =
3240
    qq|<th class=listheading>| . $locale->text('Qty') . qq|</th>|;
3241
  $column_header{rop} =
3242
    qq|<th class=listheading>| . $locale->text('ROP') . qq|</th>|;
3243
  $column_header{stock} =
3244
    qq|<th class=listheading>| . $locale->text('Add') . qq|</th>|;
3245

  
3246
  @column_index = (qw(partnumber description bin onhand rop stock));
3247

  
3248
  $form->{title} = $locale->text('Stock Assembly');
3249

  
3250
  $form->{callback} =
3251
    "$form->{script}?action=stock_assembly&path=$form->{path}&login=$form->{login}&password=$form->{password}";
3252

  
3253
  $form->header;
3254

  
3255
  $colspan = $#column_index + 1;
3256

  
3257
  print qq|
3258
<body>
3259

  
3260
<form method=post action=$form->{script}>
3261

  
3262
<table width=100%>
3263
  <tr>
3264
    <th class=listtop colspan=$colspan>$form->{title}</th>
3265
  </tr>
3266
  <tr size=5></tr>
3267
  <tr class=listheading>|;
3268

  
3269
  map { print "\n$column_header{$_}" } @column_index;
3270

  
3271
  print qq|
3272
  </tr>
3273
|;
3274

  
3275
  $i = 1;
3276
  foreach $ref (@{ $form->{assembly_items} }) {
3277

  
3278
    map { $ref->{$_} =~ s/\"/&quot;/g } qw(partnumber description);
3279

  
3280
    $column_data{partnumber}  = qq|<td width=20%>$ref->{partnumber}</td>|;
3281
    $column_data{description} =
3282
      qq|<td width=50%>$ref->{description}&nbsp;</td>|;
3283
    $column_data{bin}    = qq|<td>$ref->{bin}&nbsp;</td>|;
3284
    $column_data{onhand} =
3285
        qq|<td align=right>|
3286
      . $form->format_amount(\%myconfig, $ref->{onhand})
3287
      . qq|</td>|;
3288
    $column_data{rop} =
3289
        qq|<td align=right>|
3290
      . $form->format_amount(\%myconfig, $ref->{rop})
3291
      . qq|</td>|;
3292
    $column_data{stock} = qq|<td width=10%><input name="qty_$i" size=10></td>|;
3293

  
3294
    $j++;
3295
    $j %= 2;
3296
    print
3297
      qq|<tr class=listrow$j><input name="id_$i" type=hidden value=$ref->{id}>\n|;
3298

  
3299
    map { print "\n$column_data{$_}" } @column_index;
3300

  
3301
    print qq|
3302
    </tr>
3303
|;
3304

  
3305
    $i++;
3306

  
3307
  }
3308

  
3309
  $i--;
3310
  print qq|
3311
  <tr>
3312
    <td colspan=6><hr size=3 noshade>
3313
  </tr>
3314
</table>
3315
<input name=rowcount type=hidden value="$i">
3316

  
3317
<input type=hidden name=path value=$form->{path}>
3318
<input type=hidden name=login value=$form->{login}>
3319
<input type=hidden name=password value=$form->{password}>
3320

  
3321
<input name=callback type=hidden value="$form->{callback}">
3322

  
3323
<input type=hidden name=nextsub value=restock_assemblies>
3324

  
3325
<br>
3326
<input class=submit type=submit name=action value="|
3327
    . $locale->text('Continue') . qq|">
3328

  
3329
</form>
3330

  
3331
</body>
3332
</html>
3333
|;
3334

  
3335
  $lxdebug->leave_sub();
3336
}
3337

  
3338
sub restock_assemblies {
3339
  $lxdebug->enter_sub();
3340

  
3341
  $form->redirect($locale->text('Assemblies restocked!'))
3342
    if (IC->restock_assemblies(\%myconfig, \%$form));
3343
  $form->error($locale->text('Cannot stock assemblies!'));
3344

  
3345
  $lxdebug->leave_sub();
3346
}
3347

  
3348 3173
sub price_row {
3349 3174
  $lxdebug->enter_sub();
3350 3175

  
bin/mozilla/io.pl
1549 1549
      . $locale->text('Credit Note');
1550 1550
  }
1551 1551

  
1552
  if ($form->{type} eq 'ship_order') {
1553
    $type = qq|<select name=formname>
1554
	    <option value=pick_list $form->{PD}{pick_list}>|
1555
      . $locale->text('Pick List') . qq|
1556
	    <option value=packing_list $form->{PD}{packing_list}>|
1557
      . $locale->text('Packing List');
1558
  }
1559

  
1560
  if ($form->{type} eq 'receive_order') {
1561
    $type = qq|<select name=formname>
1562
	    <option value=bin_list $form->{PD}{bin_list}>|
1563
      . $locale->text('Bin List');
1564
  }
1565

  
1566 1552
  if ($form->{media} eq 'email') {
1567 1553
    $media = qq|<select name=sendmode>
1568 1554
	    <option value=attachment $form->{SM}{attachment}>|
bin/mozilla/oe.pl
205 205
  $intnotes = $form->{intnotes};
206 206

  
207 207
  # get customer / vendor
208
  if ($form->{type} =~ /(purchase_order|request_quotation|receive_order)/) {
208
  if ($form->{type} =~ /(purchase_order|request_quotation)/) {
209 209
    IR->get_vendor(\%myconfig, \%$form);
210 210

  
211 211
    #quote all_vendor Bug 133
......
1248 1248
    $ordnumber     = 'ordnumber';
1249 1249
    $employee      = $locale->text('Employee');
1250 1250
  }
1251

  
1251 1252
  if ($form->{type} eq 'request_quotation') {
1252 1253
    $form->{title} = $locale->text('Request for Quotations');
1253 1254
    $form->{vc}    = 'vendor';
......
1255 1256
    $ordnumber     = 'quonumber';
1256 1257
    $employee      = $locale->text('Employee');
1257 1258
  }
1258
  if ($form->{type} eq 'receive_order') {
1259
    $form->{title} = $locale->text('Receive Merchandise');
1260
    $form->{vc}    = 'vendor';
1261
    $ordlabel      = $locale->text('Order Number');
1262
    $ordnumber     = 'ordnumber';
1263
    $employee      = $locale->text('Employee');
1264
  }
1259

  
1265 1260
  if ($form->{type} eq 'sales_order') {
1266 1261
    $form->{title} = $locale->text('Sales Orders');
1267 1262
    $form->{vc}    = 'customer';
......
1269 1264
    $ordnumber     = 'ordnumber';
1270 1265
    $employee      = $locale->text('Salesperson');
1271 1266
  }
1272
  if ($form->{type} eq 'ship_order') {
1273
    $form->{title} = $locale->text('Ship Merchandise');
1274
    $form->{vc}    = 'customer';
1275
    $ordlabel      = $locale->text('Order Number');
1276
    $ordnumber     = 'ordnumber';
1277
    $employee      = $locale->text('Salesperson');
1278

  
1279
  }
1280 1267

  
1281 1268
  if ($form->{type} eq 'sales_quotation') {
1282 1269
    $form->{title} = $locale->text('Quotations');
......
1286 1273
    $employee      = $locale->text('Employee');
1287 1274
  }
1288 1275

  
1289
  if ($form->{type} =~ /(ship|receive)_order/) {
1290
    OE->get_warehouses(\%myconfig, \%$form);
1291

  
1292
    # warehouse
1293
    if (@{ $form->{all_warehouses} }) {
1294
      $form->{selectwarehouse} = "<option>\n";
1295
      $form->{warehouse}       = qq|$form->{warehouse}--$form->{warehouse_id}|;
1296

  
1297
      map {
1298
        $form->{selectwarehouse} .=
1299
          "<option>$_->{description}--$_->{id}\n"
1300
      } (@{ $form->{all_warehouses} });
1301

  
1302
      $warehouse = qq|
1303
	      <tr>
1304
		<th align=right>| . $locale->text('Warehouse') . qq|</th>
1305
		<td colspan=3><select name=warehouse>$form->{selectwarehouse}</select></td>
1306
		<input type=hidden name=selectwarehouse value="$form->{selectwarehouse}">
1307
	      </tr>
1308
|;
1309

  
1310
    }
1311
  }
1312

  
1313 1276
  # setup vendor / customer selection
1314 1277
  $form->all_vc(\%myconfig, $form->{vc},
1315 1278
                ($form->{vc} eq 'customer') ? "AR" : "AP");
......
1345 1308
	</tr>
1346 1309
| if $form->{selectdepartment};
1347 1310

  
1348
  if ($form->{type} !~ /(ship_order|receive_order)/) {
1349
    $openclosed = qq|
1350
	      <tr>
1351
	        <td><input name="open" class=checkbox type=checkbox value=1 checked> |
1352
      . $locale->text('Open') . qq|</td>
1353
	        <td><input name="closed" class=checkbox type=checkbox value=1 $form->{closed}> |
1354
      . $locale->text('Closed') . qq|</td>
1355
	      </tr>
1356
|;
1357
  } else {
1358

  
1359
    $openclosed = qq|
1311
  $openclosed = qq|
1360 1312
	        <input type=hidden name="open" value=1>
1361 1313
|;
1362
  }
1363 1314

  
1364 1315
  my $delivered;
1365 1316
  if (($form->{"type"} eq "sales_order") ||
......
1561 1512
  }
1562 1513

  
1563 1514
  if ($form->{vc} eq 'vendor') {
1564
    if ($form->{type} eq 'receive_order') {
1565
      $form->{title} = $locale->text('Receive Merchandise');
1566
    } elsif ($form->{type} eq 'purchase_order') {
1515
    if ($form->{type} eq 'purchase_order') {
1567 1516
      $form->{title} = $locale->text('Purchase Orders');
1568 1517
    } else {
1569 1518
      $form->{title} = $locale->text('Request for Quotations');
......
1575 1524
    if ($form->{type} eq 'sales_order') {
1576 1525
      $form->{title} = $locale->text('Sales Orders');
1577 1526
      $employee = $locale->text('Salesperson');
1578
    } elsif ($form->{type} eq 'ship_order') {
1579
      $form->{title} = $locale->text('Ship Merchandise');
1580
      $employee = $locale->text('Salesperson');
1581 1527
    } else {
1582 1528
      $form->{title} = $locale->text('Quotations');
1583 1529
      $employee = $locale->text('Employee');
......
2497 2443
  $lxdebug->leave_sub();
2498 2444
}
2499 2445

  
2500
sub ship_receive {
2501
  $lxdebug->enter_sub();
2502

  
2503
  &order_links;
2504

  
2505
  &prepare_order;
2506

  
2507
  OE->get_warehouses(\%myconfig, \%$form);
2508

  
2509
  # warehouse
2510
  if (@{ $form->{all_warehouses} }) {
2511
    $form->{selectwarehouse} = "<option>\n";
2512

  
2513
    map { $form->{selectwarehouse} .= "<option>$_->{description}--$_->{id}\n" }
2514
      (@{ $form->{all_warehouses} });
2515

  
2516
    if ($form->{warehouse}) {
2517
      $form->{selectwarehouse} = "<option>$form->{warehouse}";
2518
    }
2519
  }
2520

  
2521
  $form->{shippingdate} = $form->current_date(\%myconfig);
2522
  $form->{"$form->{vc}"} =~ s/--.*//;
2523

  
2524
  @flds  = ();
2525
  @a     = ();
2526
  $count = 0;
2527
  foreach $key (keys %$form) {
2528
    if ($key =~ /_1$/) {
2529
      $key =~ s/_1//;
2530
      push @flds, $key;
2531
    }
2532
  }
2533

  
2534
  for $i (1 .. $form->{rowcount}) {
2535

  
2536
    # undo formatting from prepare_order
2537
    map {
2538
      $form->{"${_}_$i"} =
2539
        $form->parse_amount(\%myconfig, $form->{"${_}_$i"})
2540
    } qw(qty ship);
2541
    $n = ($form->{"qty_$i"} -= $form->{"ship_$i"});
2542
    if (abs($n) > 0
2543
        && ($form->{"inventory_accno_$i"} || $form->{"assembly_$i"})) {
2544
      $form->{"ship_$i"}         = "";
2545
      $form->{"serialnumber_$i"} = "";
2546

  
2547
      push @a, {};
2548
      $j = $#a;
2549

  
2550
      map { $a[$j]->{$_} = $form->{"${_}_$i"} } @flds;
2551
      $count++;
2552
    }
2553
  }
2554

  
2555
  $form->redo_rows(\@flds, \@a, $count, $form->{rowcount});
2556
  $form->{rowcount} = $count;
2557

  
2558
  &display_ship_receive;
2559

  
2560
  $lxdebug->leave_sub();
2561
}
2562

  
2563
sub display_ship_receive {
2564
  $lxdebug->enter_sub();
2565

  
2566
  $vclabel = ucfirst $form->{vc};
2567
  $vclabel = $locale->text($vclabel);
2568

  
2569
  $form->{rowcount}++;
2570

  
2571
  if ($form->{vc} eq 'customer') {
2572
    $form->{title} = $locale->text('Ship Merchandise');
2573
    $shipped = $locale->text('Shipping Date');
2574
  } else {
2575
    $form->{title} = $locale->text('Receive Merchandise');
2576
    $shipped = $locale->text('Date Received');
2577
  }
2578

  
2579
  # set option selected
2580
  foreach $item (warehouse, employee) {
2581
    $form->{"select$item"} =~ s/ selected//;
2582
    $form->{"select$item"} =~
2583
      s/option>\Q$form->{$item}\E/option selected>$form->{$item}/;
2584
  }
2585

  
2586
  $warehouse = qq|
2587
	      <tr>
2588
		<th align=right>| . $locale->text('Warehouse') . qq|</th>
2589
		<td><select name=warehouse>$form->{selectwarehouse}</select></td>
2590
		<input type=hidden name=selectwarehouse value="$form->{selectwarehouse}">
2591
	      </tr>
2592
| if $form->{selectwarehouse};
2593

  
2594
  $employee = qq|
2595
 	      <tr>
2596
	        <th align=right nowrap>| . $locale->text('Contact') . qq|</th>
2597
		<td><select name=employee>$form->{selectemployee}</select></td>
2598
		<input type=hidden name=selectemployee value="$form->{selectemployee}">
2599
	      </tr>
2600
|;
2601

  
2602
  $form->header;
2603

  
2604
  print qq|
2605
<body>
2606

  
2607
<form method=post action=$form->{script}>
2608

  
2609
<input type=hidden name=id value=$form->{id}>
2610

  
2611
<input type=hidden name=display_form value=display_ship_receive>
2612

  
2613
<input type=hidden name=type value=$form->{type}>
2614
<input type=hidden name=media value=$form->{media}>
2615
<input type=hidden name=format value=$form->{format}>
2616

  
2617
<input type=hidden name=queued value="$form->{queued}">
2618
<input type=hidden name=printed value="$form->{printed}">
2619
<input type=hidden name=emailed value="$form->{emailed}">
2620

  
2621
<input type=hidden name=vc value=$form->{vc}>
2622

  
2623
<table width=100%>
2624
  <tr class=listtop>
2625
    <th class=listtop>$form->{title}</th>
2626
  </tr>
2627
  <tr height="5"></tr>
2628
  <tr>
2629
    <td>
2630
      <table width="100%">
2631
        <tr valign=top>
2632
	  <td>
2633
	    <table width=100%>
2634
	      <tr>
2635
		<th align=right>$vclabel</th>
2636
		<td colspan=3>$form->{$form->{vc}}</td>
2637
		<input type=hidden name=$form->{vc} value="$form->{$form->{vc}}">
2638
		<input type=hidden name="$form->{vc}_id" value=$form->{"$form->{vc}_id"}>
2639
	      </tr>
2640
	      $department
2641
	      <tr>
2642
		<th align=right>| . $locale->text('Shipping Point') . qq|</th>
2643
		<td colspan=3>
2644
		<input name=shippingpoint size=35 value="$form->{shippingpoint}">
2645
	      </tr>
2646
	      <tr>
2647
		<th align=right>| . $locale->text('Ship via') . qq|</th>
2648
		<td colspan=3>
2649
		<input name=shipvia size=35 value="$form->{shipvia}">
2650
	      </tr>
2651
	      $warehouse
2652
	    </table>
2653
	  </td>
2654
	  <td align=right>
2655
	    <table>
2656
	      $employee
2657
	      <tr>
2658
		<th align=right nowrap>| . $locale->text('Order Number') . qq|</th>
2659
		<td>$form->{ordnumber}</td>
2660
		<input type=hidden name=ordnumber value="$form->{ordnumber}">
2661
	      </tr>
2662
	      <tr>
2663
		<th align=right nowrap>| . $locale->text('Order Date') . qq|</th>
2664
		<td>$form->{transdate}</td>
2665
		<input type=hidden name=transdate value=$form->{transdate}>
2666
	      </tr>
2667
	      <tr>
2668
		<th align=right nowrap>$shipped</th>
2669
		<td><input name=shippingdate size=11 value=$form->{shippingdate}></td>
2670
	      </tr>
2671
	    </table>
2672
	  </td>
2673
	</tr>
2674
      </table>
2675
    </td>
2676
  </tr>
2677

  
2678
<!-- shipto are in hidden variables -->
2679

  
2680
<input type=hidden name=shiptoname value="$form->{shiptoname}">
2681
<input type=hidden name=shiptostreet value="$form->{shiptostreet}">
2682
<input type=hidden name=shiptozipcode value="$form->{shiptozipcode}">
2683
<input type=hidden name=shiptocity value="$form->{shiptocity}">
2684
<input type=hidden name=shiptocountry value="$form->{shiptocountry}">
2685
<input type=hidden name=shiptocontact value="$form->{shiptocontact}">
2686
<input type=hidden name=shiptophone value="$form->{shiptophone}">
2687
<input type=hidden name=shiptofax value="$form->{shiptofax}">
2688
<input type=hidden name=shiptoemail value="$form->{shiptoemail}">
2689
<input type=hidden name=shiptodepartment_1 value="$form->{shiptodepartment_1}">
2690
<input type=hidden name=shiptodepartment_2 value="$form->{shiptodepartment_2}">
2691

  
2692
<!-- email variables -->
2693
<input type=hidden name=message value="$form->{message}">
2694
<input type=hidden name=email value="$form->{email}">
2695
<input type=hidden name=subject value="$form->{subject}">
2696
<input type=hidden name=cc value="$form->{cc}">
2697
<input type=hidden name=bcc value="$form->{bcc}">
2698

  
2699
|;
2700

  
2701
  @column_index =
2702
    (partnumber, description, qty, ship, unit, bin, serialnumber);
2703

  
2704
  if ($form->{type} eq "ship_order") {
2705
    $column_data{ship} =
2706
        qq|<th class=listheading align=center width="auto">|
2707
      . $locale->text('Ship')
2708
      . qq|</th>|;
2709
  }
2710
  if ($form->{type} eq "receive_order") {
2711
    $column_data{ship} =
2712
        qq|<th class=listheading align=center width="auto">|
2713
      . $locale->text('Recd')
2714
      . qq|</th>|;
2715
  }
2716

  
2717
  my $colspan = $#column_index + 1;
2718

  
2719
  $column_data{partnumber} =
2720
    qq|<th class=listheading nowrap>| . $locale->text('Number') . qq|</th>|;
2721
  $column_data{description} =
2722
      qq|<th class=listheading nowrap>|
2723
    . $locale->text('Description')
2724
    . qq|</th>|;
2725
  $column_data{qty} =
2726
    qq|<th class=listheading nowrap>| . $locale->text('Qty') . qq|</th>|;
2727
  $column_data{unit} =
2728
    qq|<th class=listheading nowrap>| . $locale->text('Unit') . qq|</th>|;
2729
  $column_data{bin} =
2730
    qq|<th class=listheading nowrap>| . $locale->text('Bin') . qq|</th>|;
2731
  $column_data{serialnumber} =
2732
      qq|<th class=listheading nowrap>|
2733
    . $locale->text('Serial No.')
2734
    . qq|</th>|;
2735

  
2736
  print qq|
2737
  <tr>
2738
    <td>
2739
      <table width=100%>
2740
	<tr class=listheading>|;
2741

  
2742
  map { print "\n$column_data{$_}" } @column_index;
2743

  
2744
  print qq|
2745
        </tr>
2746
|;
2747

  
2748
  for $i (1 .. $form->{rowcount} - 1) {
2749

  
2750
    # undo formatting
2751
    $form->{"ship_$i"} = $form->parse_amount(\%myconfig, $form->{"ship_$i"});
2752

  
2753
    # convert " to &quot;
2754
    map { $form->{"${_}_$i"} =~ s/\"/&quot;/g }
2755
      qw(partnumber description unit bin serialnumber);
2756

  
2757
    $description = $form->{"description_$i"};
2758
    $description =~ s/\n/<br>/g;
2759

  
2760
    $column_data{partnumber} =
2761
      qq|<td>$form->{"partnumber_$i"}<input type=hidden name="partnumber_$i" value="$form->{"partnumber_$i"}"></td>|;
2762
    $column_data{description} =
2763
      qq|<td>$description<input type=hidden name="description_$i" value="$form->{"description_$i"}"></td>|;
2764
    $column_data{qty} =
2765
        qq|<td align=right>|
2766
      . $form->format_amount(\%myconfig, $form->{"qty_$i"}, $dec_qty)
2767
      . qq|<input type=hidden name="qty_$i" value="$form->{"qty_$i"}"></td>|;
2768
    $column_data{ship} =
2769
        qq|<td align=right><input name="ship_$i" size=5 value=|
2770
      . $form->format_amount(\%myconfig, $form->{"ship_$i"})
2771
      . qq|></td>|;
2772
    $column_data{unit} =
2773
      qq|<td>$form->{"unit_$i"}<input type=hidden name="unit_$i" value="$form->{"unit_$i"}"></td>|;
2774
    $column_data{bin} =
2775
      qq|<td>$form->{"bin_$i"}<input type=hidden name="bin_$i" value="$form->{"bin_$i"}"></td>|;
2776

  
2777
    $column_data{serialnumber} =
2778
      qq|<td><input name="serialnumber_$i" size=15 value="$form->{"serialnumber_$i"}"></td>|;
2779

  
2780
    print qq|
2781
        <tr valign=top>|;
2782

  
2783
    map { print "\n$column_data{$_}" } @column_index;
2784

  
2785
    print qq|
2786
        </tr>
2787

  
2788
<input type=hidden name="orderitems_id_$i" value=$form->{"orderitems_id_$i"}>
2789
<input type=hidden name="id_$i" value=$form->{"id_$i"}>
2790
<input type=hidden name="assembly_$i" value="$form->{"assembly_$i"}">
2791
<input type=hidden name="partsgroup_$i" value="$form->{"partsgroup_$i"}">
2792

  
2793
|;
2794

  
2795
  }
2796

  
2797
  print qq|
2798
      </table>
2799
    </td>
2800
  </tr>
2801
  <tr>
2802
    <td><hr size=3 noshade></td>
2803
  </tr>
2804
  <tr>
2805
    <td>
2806
|;
2807

  
2808
  $form->{copies} = 1;
2809

  
2810
  &print_options;
2811

  
2812
  print qq|
2813
    </td>
2814
  </tr>
2815
</table>
2816
<br>
2817
<input class=submit type=submit name=action value="|
2818
    . $locale->text('Update') . qq|">
2819
<input class=submit type=submit name=action value="|
2820
    . $locale->text('Print') . qq|">
2821
|;
2822

  
2823
  if ($form->{type} eq 'ship_order') {
2824
    print qq|
2825
<input class=submit type=submit name=action value="|
2826
      . $locale->text('Ship to') . qq|">
2827
<input class=submit type=submit name=action value="|
2828
      . $locale->text('E-mail') . qq|">
2829
|;
2830
  }
2831

  
2832
  print qq|
2833

  
2834
<input class=submit type=submit name=action value="|
2835
    . $locale->text('Done') . qq|">
2836

  
2837
<input type=hidden name=rowcount value=$form->{rowcount}>
2838

  
2839
<input name=callback type=hidden value="$callback">
2840

  
2841
<input type=hidden name=path value=$form->{path}>
2842
<input type=hidden name=login value=$form->{login}>
2843
<input type=hidden name=password value=$form->{password}>
2844

  
2845
</form>
2846

  
2847
</body>
2848
</html>
2849
|;
2850

  
2851
  $lxdebug->leave_sub();
2852
}
2853

  
2854
sub done {
2855
  $lxdebug->enter_sub();
2856

  
2857
  if ($form->{type} eq 'ship_order') {
2858
    $form->isblank("shippingdate", $locale->text('Shipping Date missing!'));
2859
  } else {
2860
    $form->isblank("shippingdate", $locale->text('Date received missing!'));
2861
  }
2862

  
2863
  $total = 0;
2864
  map {
2865
    $total += $form->{"ship_$_"} =
2866
      $form->parse_amount(\%myconfig, $form->{"ship_$_"})
2867
  } (1 .. $form->{rowcount} - 1);
2868

  
2869
  $form->error($locale->text('Nothing entered!')) unless $total;
2870

  
2871
  $form->redirect($locale->text('Inventory saved!'))
2872
    if OE->save_inventory(\%myconfig, \%$form);
2873
  $form->error($locale->text('Could not save!'));
2874

  
2875
  $lxdebug->leave_sub();
2876
}
2877

  
2878
sub search_transfer {
2879
  $lxdebug->enter_sub();
2880

  
2881
  OE->get_warehouses(\%myconfig, \%$form);
2882

  
2883
  # warehouse
2884
  if (@{ $form->{all_warehouses} }) {
2885
    $form->{selectwarehouse} = "<option>\n";
2886
    $form->{warehouse}       = qq|$form->{warehouse}--$form->{warehouse_id}|;
2887

  
2888
    map { $form->{selectwarehouse} .= "<option>$_->{description}--$_->{id}\n" }
2889
      (@{ $form->{all_warehouses} });
2890
  } else {
2891
    $form->error($locale->text('Nothing to transfer!'));
2892
  }
2893

  
2894
  $form->{title} = $locale->text('Transfer Inventory');
2895

  
2896
  $form->header;
2897

  
2898
  print qq|
2899
<body>
2900

  
2901
<form method=post action=$form->{script}>
2902

  
2903
<table width=100%>
2904
  <tr>
2905
    <th class=listtop>$form->{title}</th>
2906
  </tr>
2907
  <tr height="5"></tr>
2908
  <tr>
2909
    <td>
2910
      <table>
2911
        <tr>
2912
          <th align=right nowrap>| . $locale->text('Transfer to') . qq|</th>
2913
          <td><select name=warehouse>$form->{selectwarehouse}</select></td>
2914
        </tr>
2915
	<tr>
2916
	  <th align="right" nowrap="true">| . $locale->text('Part Number') . qq|</th>
2917
	  <td><input name=partnumber size=20></td>
2918
	</tr>
2919
	<tr>
2920
	  <th align="right" nowrap="true">| . $locale->text('Description') . qq|</th>
2921
	  <td><input name=description size=40></td>
2922
	</tr>
2923
	<tr>
2924
	  <th align=right nowrap>| . $locale->text('Group') . qq|</th>
2925
	  <td><input name=partsgroup size=20></td>
2926
	</tr>
2927
      </table>
2928
    </td>
2929
  </tr>
2930
  <tr>
2931
    <td><hr size=3 noshade></td>
2932
  </tr>
2933
</table>
2934

  
2935
<br>
2936
<input type=hidden name=sort value=partnumber>
2937
<input type=hidden name=nextsub value=list_transfer>
2938

  
2939
<input type=hidden name=path value=$form->{path}>
2940
<input type=hidden name=login value=$form->{login}>
2941
<input type=hidden name=password value=$form->{password}>
2942

  
2943
<input class=submit type=submit name=action value="|
2944
    . $locale->text('Continue') . qq|">
2945
</form>
2946

  
2947
</body>
2948
</html>
2949
|;
2950

  
2951
  $lxdebug->leave_sub();
2952
}
2953

  
2954
sub list_transfer {
2955
  $lxdebug->enter_sub();
2956

  
2957
  OE->get_inventory(\%myconfig, \%$form);
2958

  
2959
  $partnumber  = $form->escape($form->{partnumber});
2960
  $warehouse   = $form->escape($form->{warehouse});
2961
  $description = $form->escape($form->{description});
2962
  $partsgroup  = $form->escape($form->{partsgroup});
2963

  
2964
  # construct href
2965
  $href =
2966
    "$form->{script}?path=$form->{path}&action=list_transfer&partnumber=$partnumber&warehouse=$warehouse&description=$description&partsgroup=$partsgroup&login=$form->{login}&password=$form->{password}";
2967

  
2968
  # construct callback
2969
  $partnumber  = $form->escape($form->{partnumber},  1);
2970
  $warehouse   = $form->escape($form->{warehouse},   1);
2971
  $description = $form->escape($form->{description}, 1);
2972
  $partsgroup  = $form->escape($form->{partsgroup},  1);
2973

  
2974
  $callback =
2975
    "$form->{script}?path=$form->{path}&action=list_transfer&partnumber=$partnumber&warehouse=$warehouse&description=$description&partsgroup=$partsgroup&login=$form->{login}&password=$form->{password}";
2976

  
2977
  @column_index =
2978
    $form->sort_columns(
2979
      qw(partnumber description partsgroup make model warehouse qty transfer));
2980

  
2981
  $column_header{partnumber} =
2982
      qq|<th><a class=listheading href=$href&sort=partnumber>|
2983
    . $locale->text('Part Number')
2984
    . qq|</a></th>|;
2985
  $column_header{description} =
2986
      qq|<th><a class=listheading href=$href&sort=description>|
2987
    . $locale->text('Description')
2988
    . qq|</a></th>|;
2989
  $column_header{partsgroup} =
2990
      qq|<th><a class=listheading href=$href&sort=partsgroup>|
2991
    . $locale->text('Group')
2992
    . qq|</a></th>|;
2993
  $column_header{warehouse} =
2994
      qq|<th><a class=listheading href=$href&sort=warehouse>|
2995
    . $locale->text('From')
2996
    . qq|</a></th>|;
2997
  $column_header{qty} =
2998
    qq|<th><a class=listheading>| . $locale->text('Qty') . qq|</a></th>|;
2999
  $column_header{transfer} =
3000
    qq|<th><a class=listheading>| . $locale->text('Transfer') . qq|</a></th>|;
3001

  
3002
  $option = $locale->text('Transfer to');
3003

  
3004
  ($warehouse, $warehouse_id) = split /--/, $form->{warehouse};
3005

  
3006
  if ($form->{warehouse}) {
3007
    $option .= " : $warehouse";
3008
  }
3009
  if ($form->{partnumber}) {
3010
    $option .= "\n<br>" if ($option);
3011
    $option .= $locale->text('Part Number') . " : $form->{partnumber}";
3012
  }
3013
  if ($form->{description}) {
3014
    $option .= "\n<br>" if ($option);
3015
    $option .= $locale->text('Description') . " : $form->{description}";
3016
  }
3017
  if ($form->{partsgroup}) {
3018
    $option .= "\n<br>" if ($option);
3019
    $option .= $locale->text('Group') . " : $form->{partsgroup}";
3020
  }
3021

  
3022
  $form->{title} = $locale->text('Transfer Inventory');
3023

  
3024
  $form->header;
3025

  
3026
  print qq|
3027
<body>
3028

  
3029
<form method=post action=$form->{script}>
3030

  
3031
<input type=hidden name=warehouse_id value=$warehouse_id>
3032

  
3033
<table width=100%>
3034
  <tr>
3035
    <th class=listtop>$form->{title}</th>
3036
  </tr>
3037
  <tr height="5"></tr>
3038
  <tr>
3039
    <td>$option</td>
3040
  </tr>
3041
  <tr>
3042
    <td>
3043
      <table width=100%>
3044
	<tr class=listheading>|;
3045

  
3046
  map { print "\n$column_header{$_}" } @column_index;
3047

  
3048
  print qq|
3049
	</tr>
3050
|;
3051

  
3052
  if (@{ $form->{all_inventory} }) {
3053
    $sameitem = $form->{all_inventory}->[0]->{ $form->{sort} };
3054
  }
3055

  
3056
  $i = 0;
3057
  foreach $ref (@{ $form->{all_inventory} }) {
3058

  
3059
    $i++;
3060

  
3061
    $column_data{partnumber} =
3062
      qq|<td><input type=hidden name="id_$i" value=$ref->{id}>$ref->{partnumber}</td>|;
3063
    $column_data{description} = "<td>$ref->{description}&nbsp;</td>";
3064
    $column_data{partsgroup}  = "<td>$ref->{partsgroup}&nbsp;</td>";
3065
    $column_data{warehouse}   =
3066
      qq|<td><input type=hidden name="warehouse_id_$i" value=$ref->{warehouse_id}>$ref->{warehouse}&nbsp;</td>|;
3067
    $column_data{qty} =
3068
        qq|<td><input type=hidden name="qty_$i" value=$ref->{qty}>|
3069
      . $form->format_amount(\%myconfig, $ref->{qty}, $dec_qty)
3070
      . qq|</td>|;
3071
    $column_data{transfer} = qq|<td><input name="transfer_$i" size=4></td>|;
3072

  
3073
    $j++;
3074
    $j %= 2;
3075
    print "
3076
        <tr class=listrow$j>";
3077

  
3078
    map { print "\n$column_data{$_}" } @column_index;
3079

  
3080
    print qq|
3081
	</tr>
3082
|;
3083

  
3084
  }
3085

  
3086
  print qq|
3087
      </table>
3088
    </td>
3089
  </tr>
3090

  
3091
  <tr>
3092
    <td><hr size=3 noshade></td>
3093
  </tr>
3094
</table>
3095

  
3096
<br>
3097

  
3098
<input name=callback type=hidden value="$callback">
3099

  
3100
<input type=hidden name=rowcount value=$i>
3101

  
3102
<input type=hidden name=path value=$form->{path}>
3103
<input type=hidden name=login value=$form->{login}>
3104
<input type=hidden name=password value=$form->{password}>
3105

  
3106
<input class=submit type=submit name=action value="|
3107
    . $locale->text('Transfer') . qq|">
3108

  
3109
</form>
3110

  
3111
</body>
3112
</html>
3113
|;
3114

  
3115
  $lxdebug->leave_sub();
3116
}
3117

  
3118
sub transfer {
3119
  $lxdebug->enter_sub();
3120

  
3121
  $form->redirect($locale->text('Inventory transferred!'))
3122
    if OE->transfer(\%myconfig, \%$form);
3123
  $form->error($locale->text('Could not transfer Inventory!'));
3124

  
3125
  $lxdebug->leave_sub();
3126
}
locale/de/all
144 144
  'Article Code'                => 'Artikelk?rzel',
145 145
  'Article Code missing!'       => 'Artikelk?rzel fehlt',
146 146
  'Assemblies'                  => 'Erzeugnisse',
147
  'Assemblies restocked!'       => 'Erzeugnisse sind im Lager!',
148 147
  'Assembly Number missing!'    => 'Erzeugnisnummer fehlt!',
149 148
  'Asset'                       => 'Aktiva/Mittelverwendung',
150 149
  'Assign new units'            => 'Neue Einheiten zuweisen',
......
235 234
  'Cannot save order!'          => 'Auftrag kann nicht gespeichert werden!',
236 235
  'Cannot save preferences!'    => 'Benutzereinstellungen k?nnen nicht gespeichert werden!',
237 236
  'Cannot save quotation!'      => 'Angebot kann nicht gespeichert werden!',
238
  'Cannot stock assemblies!'    => 'Erzeugnisse k?nnen nicht ins Lager!',
239 237
  'Cannot storno storno invoice!' => 'Kann eine Stornorechnung nicht stornieren',
240 238
  'Cash'                        => 'Zahlungsverkehr',
241 239
  'Cc'                          => 'Cc',
......
281 279
  'Could not create dunning copy!' => '',
282 280
  'Could not open the file users/members.' => 'Die Datei &quot;users/members&quot; konnte nicht ge&ouml;ffnet werden.',
283 281
  'Could not rename %s to %s. Reason: %s' => 'Die Datei &quot;%s&quot; konnte nicht in &quot;%s&quot; umbenannt werden. Grund: %s',
284
  'Could not save!'             => 'Konnte nicht speichern!',
285
  'Could not transfer Inventory!' => 'Konnte Waren nicht umlagern!',
286 282
  'Could not update prices!'    => 'Preise konnten nicht aktualisiert werden!',
287 283
  'Country'                     => 'Land',
288 284
  'Create Buchungsgruppen'      => 'Buchungsgruppe erfassen',
......
334 330
  'Date'                        => 'Datum',
335 331
  'Date Format'                 => 'Datumsformat',
336 332
  'Date Paid'                   => 'Zahlungsdatum',
337
  'Date Received'               => 'Empfangsdatum',
338 333
  'Date missing!'               => 'Datum fehlt!',
339
  'Date received missing!'      => 'Empfangsdatum fehlt!',
340 334
  'Datentr?gernummer'           => 'Datentr?gernummer',
341 335
  'Datev'                       => '',
342 336
  'Datum von'                   => 'Datum von',
......
556 550
  'Inventory Account'           => 'Warenbestand',
557 551
  'Inventory quantity must be zero before you can set this assembly obsolete!' => 'Bevor dieses Erzeugnis als ung?ltig markiert werden kann, muß das Inventar auf Null sein!',
558 552
  'Inventory quantity must be zero before you can set this part obsolete!' => 'Bevor diese Ware als ung?ltig markiert werden kann, muß das Inventar Null sein!',
559
  'Inventory saved!'            => 'Inventar gespeichert.',
560
  'Inventory transferred!'      => 'Inventar umgelagert.',
561 553
  'Invetory'                    => 'Inventar',
562 554
  'Invno.'                      => 'Rg. Nr.',
563 555
  'Invnumber'                   => 'Rechnungsnummer',
......
701 693
  'Not Discountable'            => 'Nicht rabattierf?hig',
702 694
  'Not delivered'               => 'Nicht geliefert',
703 695
  'Notes'                       => 'Bemerkungen',
704
  'Nothing entered!'            => 'Es wurde nichts eingegeben.',
705 696
  'Nothing selected!'           => 'Es wurde nichts ausgew?hlt!',
706 697
  'Nothing to delete!'          => 'Es konnte nichts gel?scht werden!',
707
  'Nothing to transfer!'        => 'Es gibt nichts zum Umlagern!',
708 698
  'Nov'                         => 'Nov',
709 699
  'November'                    => 'November',
710 700
  'Now the user must select a single Buchungsgruppe for each part instead of three distinct accounts.' => 'Der Benutzer muss nun f&uuml;r jeden Artikel nur noch die Buchungsgruppe anstelle der drei einzelnen Konten ausw&auml;hlen.',
......
856 846
  'RFQs'                        => 'Anfragen',
857 847
  'ROP'                         => 'Mindestlagerbestand',
858 848
  'Rate'                        => 'Rate',
859
  'Recd'                        => 'erhalten',
860 849
  'Receipt'                     => 'Zahlungseingang',
861 850
  'Receipt posted!'             => 'Beleg gebucht!',
862 851
  'Receipts'                    => 'Zahlungseing?nge',
863 852
  'Receivables'                 => 'Forderungen',
864
  'Receive Merchandise'         => 'Waren einlagern',
865 853
  'Reconciliation'              => 'Kontenabgleich',
866 854
  'Record in'                   => 'Buchen auf',
867 855
  'Reference'                   => 'Referenz',
......
930 918
  'Setup Menu'                  => 'Men?setup',
931 919
  'Setup Templates'             => 'Vorlagen ausw?hlen',
932 920
  'Ship'                        => 'Lagerausgang',
933
  'Ship Merchandise'            => 'Waren versenden',
934 921
  'Ship rcvd'                   => 'Lagereingang',
935 922
  'Ship to'                     => 'Lieferadresse',
936 923
  'Ship via'                    => 'Transportmittel',
937 924
  'Shipping Address'            => 'Lieferadresse',
938
  'Shipping Date'               => 'Lieferdatum',
939
  'Shipping Date missing!'      => 'Lieferdatum fehlt.',
940 925
  'Shipping Point'              => 'Versandort',
941 926
  'Shipto'                      => 'Lieferanschriften',
942 927
  'Shopartikel'                 => 'Shopartikel',
......
964 949
  'Step 3 of 3: Default units'  => 'Schritt 3 von 3: Standardeinheiten',
965 950
  'Steuersatz'                  => 'Steuersatz',
966 951
  'Stock'                       => 'einlagern',
967
  'Stock Assembly'              => 'Erzeugnis einlagern',
968 952
  'Storno'                      => 'Storno',
969 953
  'Storno (one letter abbreviation)' => 'S',
970 954
  'Storno Invoice'              => 'Stornorechnung',
......
1061 1045
  'Transaction posted!'         => 'Buchung verbucht!',
1062 1046
  'Transaction reversal enforced for all dates' => 'Fehleintragungen m?ssen f?r jeden Zeitraum mit einer Kontraeintragung ausgebessert werden',
1063 1047
  'Transaction reversal enforced up to' => 'Fehleintragungen k?nnen bis zu dem angegebenen Zeitraum nur mit einer Kontraeintragung ausgebessert werden!',
1064
  'Transfer'                    => 'Umlagerung',
1065
  'Transfer Inventory'          => 'Ware umlagern',
1066
  'Transfer to'                 => 'umlagern nach',
1067 1048
  'Translation (%s)'            => '&Uuml;bersetzung (%s)',
1068 1049
  'Trial Balance'               => 'Saldenbilanz',
1069 1050
  'Type'                        => 'Typ',
locale/de/ic
18 18
  'Are you sure you want to update the prices' => 'Sind Sie sicher, dass Sie die Preise 
19 19
aktualisieren wollen?',
20 20
  'Assemblies'                  => 'Erzeugnisse',
21
  'Assemblies restocked!'       => 'Erzeugnisse sind im Lager!',
22 21
  'Assembly Number missing!'    => 'Erzeugnisnummer fehlt!',
23 22
  'Attachment'                  => 'als Anhang',
24 23
  'Attachment name'             => 'Name des Anhangs',
......
32 31
  'Bought'                      => 'Gekauft',
33 32
  'Buchungsgruppe'              => 'Buchungsgruppe',
34 33
  'Cannot delete item!'         => 'Artikel kann nicht gel?scht werden!',
35
  'Cannot stock assemblies!'    => 'Erzeugnisse k?nnen nicht ins Lager!',
36 34
  'Cc'                          => 'Cc',
37 35
  'City'                        => 'Stadt',
38 36
  'Company Name'                => 'Firmenname',
......
204 202
  'Show details'                => 'Details anzeigen',
205 203
  'Sold'                        => 'Verkauft',
206 204
  'Stock'                       => 'einlagern',
207
  'Stock Assembly'              => 'Erzeugnis einlagern',
208 205
  'Storno Invoice'              => 'Stornorechnung',
209 206
  'Storno Packing List'         => 'Stornolieferschein',
210 207
  'Street'                      => 'Stra?e',
......
274 271
  'item_selected'               => 'item_selected',
275 272
  'link_part'                   => 'link_part',
276 273
  'list'                        => 'list',
277
  'list_assemblies'             => 'list_assemblies',
278 274
  'makemodel_row'               => 'makemodel_row',
279 275
  'new_item'                    => 'new_item',
280 276
  'new_license'                 => 'new_license',
......
292 288
  'reformat_numbers'            => 'reformat_numbers',
293 289
  'relink_accounts'             => 'relink_accounts',
294 290
  'request_for_quotation'       => 'request_for_quotation',
295
  'restock_assemblies'          => 'restock_assemblies',
296 291
  'restore_form'                => 'restore_form',
297 292
  'save'                        => 'save',
298 293
  'save_as_new'                 => 'save_as_new',
......
309 304
  'set_longdescription'         => 'set_longdescription',
310 305
  'set_pricegroup'              => 'set_pricegroup',
311 306
  'ship_to'                     => 'ship_to',
312
  'stock_assembly'              => 'stock_assembly',
313 307
  'top100'                      => 'top100',
314 308
  'update'                      => 'update',
315 309
  'update_prices'               => 'update_prices',
locale/de/oe
44 44
  'Contact Person'              => 'Ansprechpartner',
45 45
  'Continue'                    => 'Weiter',
46 46
  'Copies'                      => 'Kopien',
47
  'Could not save!'             => 'Konnte nicht speichern!',
48
  'Could not transfer Inventory!' => 'Konnte Waren nicht umlagern!',
49 47
  'Country'                     => 'Land',
50 48
  'Credit Limit'                => 'Kreditlimit',
51 49
  'Credit Limit exceeded!!!'    => 'Kreditlimit ?berschritten!',
... Dieser Diff wurde abgeschnitten, weil er die maximale Anzahl anzuzeigender Zeilen überschreitet.

Auch abrufbar als: Unified diff