Beispiel #1
0
        public static TrwRefCashFlow GetRefByFullCode(IObjectSpace os, IList <TrwRefCashFlow> all_refs, TrwRefCashFlow base_item, String path)
        {
            String code = path;

            if (base_item != null)
            {
                code = base_item.Code + "." + code;
            }
            return(all_refs.FirstOrDefault(x => x.Code == code));
        }
Beispiel #2
0
        public static TrwRefCashFlow AutoDetect(IObjectSpace os, Boolean CashDirect, fmCOrder order, fmPRPayType pay_type, fmCostItem cost_item)
        {
            IList <TrwRefCashFlow> all_refs = os.GetObjects <TrwRefCashFlow>();
            TrwRefCashFlow         current  = null;

            if (CashDirect)
            {
                return(null);
            }
            else
            {
                if (cost_item.Code == "2000" ||
                    cost_item.Code == "2001")
                {
                    return(GetRefByFullCode(os, all_refs, null, "2.1.1.2.1"));
                }
                if (cost_item.Code == "2003" ||
                    cost_item.Code == "2006")
                {
                    return(GetRefByFullCode(os, all_refs, null, "2.1.1.2.2"));
                }
                if (cost_item.Code == "2002" ||
                    cost_item.Code == "2004" ||
                    cost_item.Code == "2005")
                {
                    return(GetRefByFullCode(os, all_refs, null, "2.1.1.2.3"));
                }
                if (order.Subject != null && order.Subject.Direction != null && order.AnalitycFinanceSource != null && order.AnalitycFinanceSource.Code == "Коммерческий" &&
                    (order.Subject.Direction.Code != "ПТР" || order.Subject.Direction.Code != "НР" || order.Subject.Direction.Code != "СП"))
                {
                    current = GetRefByFullCode(os, all_refs, null, "2.1.1.1");
                    if (cost_item.Code == "6003")
                    {
                        if (order.AnalitycRegion.IsVED)
                        {
                            if (pay_type == fmPRPayType.PREPAYMENT)
                            {
                                return(GetRefByFullCode(os, all_refs, current, "1.1.1"));
                            }
                            if (pay_type == fmPRPayType.POSTPAYMENT)
                            {
                                return(GetRefByFullCode(os, all_refs, current, "1.1.2"));
                            }
                        }
                        else if (order.AnalitycOrderSource.IsGZ)
                        {
                            if (pay_type == fmPRPayType.PREPAYMENT)
                            {
                                return(GetRefByFullCode(os, all_refs, current, "1.2.1"));
                            }
                            if (pay_type == fmPRPayType.POSTPAYMENT)
                            {
                                return(GetRefByFullCode(os, all_refs, current, "1.2.2"));
                            }
                        }
                        else
                        {
                            if (pay_type == fmPRPayType.PREPAYMENT)
                            {
                                return(GetRefByFullCode(os, all_refs, current, "1.3.1"));
                            }
                            if (pay_type == fmPRPayType.POSTPAYMENT)
                            {
                                return(GetRefByFullCode(os, all_refs, current, "1.3.2"));
                            }
                        }
                    }
                    else if (cost_item.Code == "6000" || cost_item.Code == "6001" || cost_item.Code == "6002" ||
                             cost_item.Code == "6004" || cost_item.Code == "6005" || cost_item.Code == "6006" || cost_item.Code == "6007")
                    {
                        return(GetRefByFullCode(os, all_refs, current, "3"));
                    }
                    else if (cost_item.Code == "7001")
                    {
                        if (pay_type == fmPRPayType.PREPAYMENT)
                        {
                            return(GetRefByFullCode(os, all_refs, current, "2.1.1"));
                        }
                        if (pay_type == fmPRPayType.POSTPAYMENT)
                        {
                            return(GetRefByFullCode(os, all_refs, current, "2.2.1"));
                        }
                    }
                    else
                    {
                        if (pay_type == fmPRPayType.PREPAYMENT)
                        {
                            return(GetRefByFullCode(os, all_refs, current, "2.1.2"));
                        }
                        if (pay_type == fmPRPayType.POSTPAYMENT)
                        {
                            return(GetRefByFullCode(os, all_refs, current, "2.2.2"));
                        }
                    }
                }
                else if (order.Subject != null && order.Subject.Direction != null && order.Subject.Direction.Code == "ПТР")
                {
                    current = GetRefByFullCode(os, all_refs, null, "2.1.3");
                }
                else if (order.Subject != null && order.Subject.Direction != null && order.Subject.Direction.Code == "НР")
                {
                    current = GetRefByFullCode(os, all_refs, null, "2.1.1.3");
                    String smeta = "";
                    if (order.Code.Length == 8)
                    {
                        smeta = order.Code.Substring(6, 2);
                    }
                    if (smeta == "10" || smeta == "11" || smeta == "12" || smeta == "22" || smeta == "09" && order.Code != "26015509")
                    {
                        if (cost_item.Code == "6000" || cost_item.Code == "6001" || cost_item.Code == "6002" ||
                            cost_item.Code == "6004" || cost_item.Code == "6005" || cost_item.Code == "6006" ||
                            cost_item.Code == "6007" || cost_item.Code == "6003")
                        {
                            return(GetRefByFullCode(os, all_refs, current, "1.1"));
                        }
                        else
                        {
                            return(GetRefByFullCode(os, all_refs, current, "1.2"));
                        }
                    }
                    else if (order.Code == "26020500")
                    {
                        return(GetRefByFullCode(os, all_refs, current, "13"));
                    }
                    else if ((order.Code == "26003100" || order.Code == "26503100") &&
                             (cost_item.Code == "7007"))
                    {
                        return(GetRefByFullCode(os, all_refs, current, "15"));
                    }
                    else if (order.Code == "26020000" && cost_item.Code == "7012" ||
                             order.Code == "26520300" && cost_item.Code == "7012")
                    {
                        return(GetRefByFullCode(os, all_refs, current, "6"));
                    }
                    else if ((order.Code == "26020000" || order.Code == "26002000" || order.Code == "26502100" || order.Code == "26520300") &&
                             (cost_item.Code == "2101" || cost_item.Code == "2102" || order.Code == "2103"))
                    {
                        return(GetRefByFullCode(os, all_refs, current, "7"));
                    }
                    else if (order.Code == "23210000" || order.Code == "23220000")
                    {
                        return(GetRefByFullCode(os, all_refs, current, "4"));
                    }
                    else if (order.Code == "23230000")
                    {
                        return(GetRefByFullCode(os, all_refs, current, "5"));
                    }
                    else if (order.Code == "26003116")
                    {
                        return(GetRefByFullCode(os, all_refs, current, "8"));
                    }
                    else if (order.Code == "26015407" || order.Code == "25006407")
                    {
                        return(GetRefByFullCode(os, all_refs, current, "9"));
                    }
                    else if (order.Code == "26020400")
                    {
                        return(GetRefByFullCode(os, all_refs, current, "17"));
                    }
                    else if (smeta == "37" || smeta == "34" ||
                             order.Code == "26017400" || order.Code == "26017300")
                    {
                        return(GetRefByFullCode(os, all_refs, current, "16"));
                    }
                    else if (smeta == "39" ||
                             order.Code == "26015107" || order.Code == "26015307" || order.Code == "26020607" ||
                             order.Code == "25006107" || order.Code == "25006307")
                    {
                        return(GetRefByFullCode(os, all_refs, current, "12"));
                    }
                    else if (smeta == "13" || smeta == "14" || smeta == "15" || smeta == "16" && order.Code != "26003116" ||
                             smeta == "17" || smeta == "18" || smeta == "21" || smeta == "26" || smeta == "40" ||
                             order.Code == "26015509")
                    {
                        return(GetRefByFullCode(os, all_refs, current, "2"));
                    }
                    else if (smeta == "19" || smeta == "20" || order.Code == "26004000" || order.Code == "26012500")
                    {
                        return(GetRefByFullCode(os, all_refs, current, "3"));
                    }
                    else if (smeta == "31" || smeta == "33")
                    {
                        return(GetRefByFullCode(os, all_refs, current, "10"));
                    }
                    else if (smeta == "27")
                    {
                        return(GetRefByFullCode(os, all_refs, current, "11"));
                    }
                    else if (smeta == "35")
                    {
                        return(GetRefByFullCode(os, all_refs, current, "18"));
                    }
                    else if (smeta == "29" || smeta == "30")
                    {
                        return(GetRefByFullCode(os, all_refs, current, "19"));
                    }
                    else if (smeta == "23" || smeta == "24")
                    {
                        return(GetRefByFullCode(os, all_refs, current, "21"));
                    }
                    else if (smeta == "25" || smeta == "02" || smeta == "03" || smeta == "04" || smeta == "05" ||
                             smeta == "06" || smeta == "36" || smeta == "28" || smeta == "41" ||
                             order.Code == "26016000" || order.Code == "26014600" || order.Code == "23210008" ||
                             order.Code == "23220008" || order.Code == "26020000" || order.Code == "26520300" ||
                             order.Code == "25008300")
                    {
                        return(GetRefByFullCode(os, all_refs, current, "23"));
                    }
                }
                else if (order.Subject != null && order.Subject.Direction != null && order.Subject.Direction.Code == "СП")
                {
                    current = GetRefByFullCode(os, all_refs, null, "2.1.1.7");
                }
            }
            return(null);
        }