There's a great little write up on doing this for version 6.x here:

http://drupal.org/node/1106840

Does anyone have any idea of adapting this 6.x code for 7.x?

Version 6.x

foreach (array_keys($node->field_hours_work_order) as $delta) {
  if (isset($node->field_hours_work_order[$delta]['value']) && isset($node->field_per_hour_work_order[$delta]['value'])) {
    $node_field[$delta]['value'] = $node->field_hours_work_order[$delta]['value'] * $node->field_per_hour_work_order[$delta]['value'];
  }
};

What I imagined 7.x would be, but it doesn't work

foreach (array_keys($entity->field_hours_work_order) as $delta) {
  if (isset($entity->field_hours_work_order[$delta]['value']) && isset($entity->field_per_hour_work_order[$delta]['value'])) {
    $entity_field[$delta]['value'] = $entity->field_hours_work_order[$delta]['value'] * $entity->field_per_hour_work_order[$delta]['value'];
  }
};

Comments

albert9000’s picture

For future generations of Drupal users here is the answer that worked for me:

Subtotal:

$how_many = field_get_items($entity_type, $entity, 'field_hours_work_order');
$how_much = field_get_items($entity_type, $entity, 'field_per_hour_work_order');

foreach (array_keys($how_many) as $delta) {
  if (isset($how_many[$delta]['value']) && isset($how_much[$delta]['value'])) {
    $entity_field[$delta]['value'] = $how_many[$delta]['value'] * $how_much[$delta]['value'];
  }
};

Then you can grab the total:

$subtotal = field_get_items($entity_type, $entity, 'field_total_labor_work_order');

$laborpartstotal = 0;
foreach (array_keys($subtotal) as $delta) {
  if (isset($subtotal[$delta]['value'])) {
    global $laborpartstotal;
    $laborpartstotal += $subtotal[$delta]['value'];
  }
};

$entity_field[0]['value'] = $laborpartstotal;