Показать сообщение отдельно
Старый 13.07.2007, 11:47   #47  
EVGL is offline
EVGL
Moderator
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,989 / 2434 (89) +++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Похвально. У меня тоже вчера было какое-то особое настроение, так что для того вертикального решения, над которым я работаю в настоящий момент, я написал след. код:
X++:
// to cope with the apples and bananas problem
UnitQty addUnitQtyError(SPPProdUnitQtyMap _that)
{
    UnitQty qty;

    if (! _that.UnitQtyError)
        return 0;

    if (! this.UnitIdError)
        this.UnitIdError = _that.UnitIdError;
    if (! this.LanesNo)
       this.LanesNo      = _that.LanesNo;

    if (this.UnitIdError == _that.UnitIdError && this.LanesNo == _that.LanesNo) // ;-)
    {
        qty = _that.UnitQtyError;
    }
    else
    {
        qty = _that.UnitQtyError;

        if (_that.LanesNo && Unit::SPPisLengthUnit(_that.UnitIdError))
            qty = qty * _that.LanesNo; // ~ kg, m2, pcs

        if (this.LanesNo && Unit::SPPisLengthUnit(this.UnitIdError))
            qty = qty / this.LanesNo;  // ~ m

        // no conv. factor => throw error
        qty = UnitConvert::qty(qty, _that.UnitIdError, this.UnitIdError, this.prodTable().ItemId);
    }

    this.UnitQtyError += qty;

    return qty;
}

Последний раз редактировалось EVGL; 18.07.2007 в 12:39.