Guest User

Untitled

a guest
Mar 31st, 2026
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 83.40 KB | None | 0 0
  1. public PXAction<ArcContract> generate1;  
  2.         [PXUIField(DisplayName = "Generate", MapEnableRights = PXCacheRights.Select, MapViewRights = PXCacheRights.Select)]
  3.         [PXButton]
  4.         public virtual IEnumerable Generate1(PXAdapter adapter)
  5.         {
  6.             bool oldLogic = false;
  7.             foreach (PXDataRecord record in PXDatabase.SelectMulti<CTRMSetup>
  8.             (
  9.                 new PXDataField("OldLogicForDifRatio"),
  10.                 new PXDataFieldValue("BranchID", PXAccess.GetBranchID())))
  11.             {
  12.                 oldLogic = record.GetBoolean(0).GetValueOrDefault(false);
  13.             }
  14.             oldLogic = false;
  15.             if (oldLogic)
  16.             {
  17.                 #region Old Logic
  18.                 if (generateWizardFilter.AskExt() == WebDialogResult.OK)
  19.                 {
  20.  
  21.                     string MonthStart = Document.Current.PeriodStartDateS.Substring(0, 2);
  22.                     if (MonthStart.Substring(0, 1) == "0")
  23.                     {
  24.                         MonthStart = MonthStart.Substring(1, 1);
  25.                     }
  26.                     string YearStart = Document.Current.PeriodStartDateS.Substring(3, 4);
  27.  
  28.  
  29.                     string MonthEnd = Document.Current.PeriodEndDateS.Substring(0, 2);
  30.                     if (MonthEnd.Substring(0, 1) == "0")
  31.                     {
  32.                         MonthEnd = MonthEnd.Substring(1, 1);
  33.                     }
  34.                     string YearEnd = Document.Current.PeriodEndDateS.Substring(3, 4);
  35.  
  36.                     if (Int32.Parse(YearEnd) >= Int32.Parse(YearStart) || (Int32.Parse(YearEnd) >= Int32.Parse(YearStart) && Int32.Parse(MonthEnd) >= Int32.Parse(MonthStart)))
  37.                     {
  38.                         bool flp = false;
  39.                         decimal qty = Document.Current.Quantity.GetValueOrDefault(0);
  40.                         decimal splits = generateWizardFilter.Current.NumOfSubContr.GetValueOrDefault(0);
  41.                         string ContractType = "";
  42.  
  43.                         PXResultset<ArcContractLine> contrline = PXSelect<ArcContractLine, Where<ArcContractLine.contractNbr, Equal<Current<ArcContract.contractNbr>>>>.Select(this);
  44.                         int linectrm = 0;
  45.                         if (contrline.Count > 0)
  46.                         {
  47.  
  48.                             foreach (ArcContractLine contractline in contrline)
  49.                             {
  50.                                 if (contractline.SplitNbr.GetValueOrDefault(0) > linectrm && contractline.SplitNbr.GetValueOrDefault(0) != 0)
  51.                                 {
  52.                                     linectrm = contractline.SplitNbr.GetValueOrDefault(0);
  53.                                 }
  54.  
  55.                             }
  56.                         }
  57.  
  58.                         if (contrline.Count == 0)
  59.                         {
  60.                             linectrm = 0;
  61.                         }
  62.  
  63.                         int numbersofgeneratedsubcontracts = 0;
  64.  
  65.                         foreach (DateTimePair dp in GetDateTimePairs())
  66.                         {
  67.                             ArcContractLine contrLine = generateLine();
  68.                             contrLine.SplitNbr = linectrm + 1;
  69.                             linectrm = linectrm + 1;
  70.                             contrLine.ShipFrom = dp.FromDateTime;
  71.                             contrLine.ShipTo = dp.ToDateTime;
  72.                             contrLine.SplitQty = Convert.ToInt32(dp.QtyLeft) / Convert.ToInt32(splits);
  73.                             contrLine.MarketID = Document.Current.MarketID;
  74.                             if (Document.Current.LocationID.GetValueOrDefault(0) != 0)
  75.                             {
  76.                                 contrLine.DestinationID = Document.Current.LocationID.GetValueOrDefault(0);
  77.                             }
  78.  
  79.  
  80.                             if (!flp)
  81.                             {
  82.                                 flp = true;
  83.                                 decimal qtydouble = dp.QtyLeft;
  84.                                 decimal SplitQtyDifference = qtydouble % splits;
  85.  
  86.                                 decimal decimalpart = SplitQtyDifference;
  87.                                 contrLine.SplitQty += decimalpart;
  88.                             }
  89.                             contrLine.PackagingBrandID = Document.Current.PackagingBrandID;
  90.  
  91.                             string ContractType1 = Document.Current.ContractType;
  92.  
  93.                             foreach (PXDataRecord record in PXDatabase.SelectMulti<InventoryItem>
  94.                             (
  95.                                 new PXDataField("UsrPackagingID"),
  96.                                 new PXDataField("UsrPackagingSizeID"),
  97.                                 new PXDataField("UsrContractType"),
  98.                                 new PXDataFieldValue("InventoryID", Document.Current.StockItemID)))
  99.                             {
  100.                                 contrLine.PackagingID = record.GetInt32(0);
  101.                                 contrLine.PackagingSizeID = record.GetInt32(1);
  102.                                 ContractType = record.GetString(2);
  103.  
  104.  
  105.                                 if (record.GetString(2) == "DI" || record.GetString(2) == "BA")
  106.                                 {
  107.                                     contrLine.UnitPrice = Document.Current.OutrightPrice +
  108.                                         (Document.Current.PricingCCY.GetValueOrDefault(false) ?
  109.                                         GetDifferentialCuryConv(Document.Current.DifferentialRatioValue) :
  110.                                         Document.Current.DifferentialRatioValue);
  111.                                 }
  112.                                 else if (record.GetString(2) == "RA")
  113.                                 {
  114.                                     contrLine.UnitPrice = Document.Current.OutrightPrice *
  115.                                         (Document.Current.PricingCCY.GetValueOrDefault(false) ?
  116.                                         GetDifferentialCuryConv(Document.Current.DifferentialRatioValue) :
  117.                                         Document.Current.DifferentialRatioValue);
  118.                                 }
  119.                                 else
  120.                                     contrLine.UnitPrice = 0;
  121.  
  122.                             }
  123.  
  124.                             contrLine.StockItemID = Document.Current.StockItemID;
  125.  
  126.                             contrLine.StockItemID123 = Document.Current.StockItemID;
  127.  
  128.  
  129.                             string PremiumCurrency = "";
  130.                             decimal Premium = 0.00m;
  131.                             decimal? Differencial = 0.00m;
  132.                             bool OptionalityNotPresent = true;
  133.                             foreach (PXDataRecord record in PXDatabase.SelectMulti<CTRMOptionality>
  134.                                 (
  135.                                 new PXDataField("PremiumCurrency"),
  136.                                 new PXDataField("Premium"),
  137.                                 new PXDataField("Differential"),
  138.                                 new PXDataFieldValue("ContractNbr", Document.Current.ContractNbr),
  139.                                 new PXDataFieldValue("StockItemID", Document.Current.StockItemID)
  140.                                 )
  141.                                 )
  142.                             {
  143.                                 PremiumCurrency = record.GetString(0);
  144.                                 Premium = record.GetDecimal(1).GetValueOrDefault(0);
  145.                                 Differencial = record.GetDecimal(2).GetValueOrDefault(0);
  146.                                 OptionalityNotPresent = false;
  147.                             }
  148.                             if (OptionalityNotPresent)
  149.                                 throw new PXException("Please add optionality to contract!");
  150.  
  151.  
  152.  
  153.                             if (ContractType1 == "OU" && (ContractType == "DI" || ContractType == "BA"))
  154.                             {
  155.  
  156.                                 contrLine.CreatingProcess = true;
  157.  
  158.  
  159.                                 PXResultset<CTRMOther> ctrmot = PXSelect<CTRMOther, Where<CTRMOther.contractNbr, Equal<Current<ArcContract.contractNbr>>>>.Select(this);
  160.                                 CTRMOther other = new CTRMOther();
  161.                                 bool value = false;
  162.                                 foreach (CTRMOther oth in ctrmot)
  163.                                 {
  164.                                     if (oth.LocationID.GetValueOrDefault(0) == (Document.Current.LocationID.GetValueOrDefault(0)) && Document.Current.LocationID.GetValueOrDefault(0) != 0 && !value)
  165.                                     {
  166.                                         other = oth;
  167.                                         contrLine.UnitPrice = Document.Current.OutrightPrice +
  168.                                             (contrLine.PricingCCY.GetValueOrDefault(false) ? GetDifferentialCuryConv(Differencial) : Differencial)
  169.                                             + Premium + other.Premium.GetValueOrDefault(0);
  170.                                         value = true;
  171.                                     }
  172.                                 }
  173.  
  174.                                 if (!value)
  175.                                 {
  176.  
  177.                                     contrLine.UnitPrice = Document.Current.OutrightPrice + (contrLine.PricingCCY.GetValueOrDefault(false) ?
  178.                                         GetDifferentialCuryConv(Differencial) :
  179.                                         Differencial) + Premium;
  180.                                 }
  181.  
  182.                             }
  183.  
  184.                             if (ContractType1 == "OU" && (ContractType == "RA"))
  185.                             {
  186.                                 contrLine.CreatingProcess = true;
  187.  
  188.                                 PXResultset<CTRMOther> ctrmot = PXSelect<CTRMOther, Where<CTRMOther.contractNbr, Equal<Current<ArcContract.contractNbr>>>>.Select(this);
  189.                                 CTRMOther other = new CTRMOther();
  190.                                 bool value = false;
  191.                                 foreach (CTRMOther oth in ctrmot)
  192.                                 {
  193.                                     if (oth.LocationID.GetValueOrDefault(0) == (Document.Current.LocationID.GetValueOrDefault(0)) && Document.Current.LocationID.GetValueOrDefault(0) != 0 && !value)
  194.                                     {
  195.                                         other = oth;
  196.  
  197.                                         contrLine.UnitPrice = Document.Current.OutrightPrice + (contrLine.PricingCCY.GetValueOrDefault(false) ?
  198.                                         GetDifferentialCuryConv(Differencial) :
  199.                                         Differencial) + Premium + other.Premium.GetValueOrDefault(0);
  200.                                         value = true;
  201.                                     }
  202.                                 }
  203.  
  204.                                 if (!value)
  205.                                 {
  206.                                     contrLine.UnitPrice = Document.Current.OutrightPrice + (contrLine.PricingCCY.GetValueOrDefault(false) ?
  207.                                         GetDifferentialCuryConv(Differencial) :
  208.                                         Differencial) + Premium;
  209.                                 }
  210.  
  211.                             }
  212.  
  213.                             contrLine.TermsID = Document.Current.TermsID;
  214.                             contrLine.ValuationMonthS = Document.Current.ValuationMonthS;
  215.                             contrLine.QtyNotFixed = contrLine.SplitQty;
  216.                             contrLine.QtyNotInvoiced = contrLine.SplitQty;
  217.                             contrLine.QtyNotShipped = contrLine.SplitQty;
  218.  
  219.  
  220.  
  221.                             if (Document.Current.ContractType == "OU" || Document.Current.ContractType == "FO")
  222.                             {
  223.                                 contrLine.Status = "FD";
  224.                                 contrLine.QtyFixed = contrLine.SplitQty;
  225.                                 contrLine.QtyNotFixed = 0.00m;
  226.  
  227.                             }
  228.                             else if (Document.Current.ContractType == "DI" || Document.Current.ContractType == "RA" || Document.Current.ContractType == "BA")
  229.                             {
  230.                                 contrLine.Status = "TF";
  231.                             }
  232.  
  233.  
  234.                             contrLine.ValuationMonthS = Document.Current.ValuationMonthS;
  235.  
  236.                             contrLine = Transactions.Insert(contrLine);
  237.  
  238.                             if (Document.Current.ContractType == "OU" || Document.Current.ContractType == "FO")
  239.                             {
  240.  
  241.                                 CTRMPriceFixation ctrm = generatectrm();
  242.                                 ctrm.FixationDate = DateTime.Now;
  243.                                 ctrm.Quantity = contrLine.SplitQty;
  244.                                 ctrm.ContractNumber = contrLine.ContractNbr;
  245.                                 ctrm.SubContractID = contrLine.SplitNbr;
  246.  
  247.                                 PriceFixes.Insert(ctrm);
  248.                             }
  249.  
  250.  
  251.                             numbersofgeneratedsubcontracts = numbersofgeneratedsubcontracts + 1;
  252.  
  253.                         }
  254.  
  255.                         PXResultset<ArcContractLine> contrline1 = PXSelect<ArcContractLine, Where<ArcContractLine.contractNbr, Equal<Current<ArcContract.contractNbr>>>>.Select(this);
  256.  
  257.                         decimal SplitQty = 0.00m;
  258.  
  259.                         foreach (ArcContractLine oth in contrline1)
  260.                         {
  261.                             SplitQty = oth.SplitQty.GetValueOrDefault(0);
  262.                         }
  263.  
  264.                         if (numbersofgeneratedsubcontracts == contrline1.Count)
  265.                         {
  266.                             if (Document.Current.ContractType == "OU" && SplitQty == Document.Current.Quantity.GetValueOrDefault(0))
  267.                             {
  268.                                 Document.Current.Status = "OH";
  269.                             }
  270.                             if (Document.Current.ContractType == "OU" && SplitQty != Document.Current.Quantity.GetValueOrDefault(0))
  271.                             {
  272.                                 Document.Current.Status = "FF";
  273.                             }
  274.                             if (Document.Current.ContractType != "OU")
  275.                             {
  276.                                 Document.Current.Status = "TF";
  277.                             }
  278.                         }
  279.  
  280.                         else if (numbersofgeneratedsubcontracts < contrline1.Count)
  281.                         {
  282.                             bool exitendif = false;
  283.                             int countlines = 0;
  284.                             if (Document.Current.ContractType == "OU")
  285.                             {
  286.                                 if (Document.Current.PurchaseSale == "P")
  287.                                 {
  288.                                     foreach (ArcContractLine oth in contrline1)
  289.                                     {
  290.                                         countlines = countlines + 1;
  291.                                         if (!string.IsNullOrEmpty(oth.POOrderNbr) || !string.IsNullOrEmpty(oth.ReceiptNbr))
  292.                                         {
  293.                                             Document.Current.Status = "CD";
  294.                                             exitendif = true;
  295.                                             if (countlines == contrline1.Count && exitendif)
  296.                                             {
  297.                                                 Document.Current.Status = "DL";
  298.                                                 break;
  299.                                             }
  300.                                             if (countlines == contrline1.Count && !exitendif)
  301.                                             {
  302.                                                 break;
  303.                                             }
  304.                                         }
  305.                                     }
  306.                                 }
  307.  
  308.                                 if (Document.Current.PurchaseSale == "S")
  309.                                 {
  310.                                     foreach (ArcContractLine oth in contrline1)
  311.                                     {
  312.                                         countlines = countlines + 1;
  313.                                         if (!string.IsNullOrEmpty(oth.POOrderNbr) || !string.IsNullOrEmpty(oth.ReceiptNbr))
  314.                                         {
  315.                                             Document.Current.Status = "CD";
  316.                                             exitendif = true;
  317.                                             if (countlines == contrline1.Count && exitendif)
  318.                                             {
  319.                                                 Document.Current.Status = "SH";
  320.                                                 break;
  321.                                             }
  322.                                             if (countlines == contrline1.Count && !exitendif)
  323.                                             {
  324.                                                 break;
  325.                                             }
  326.                                         }
  327.                                     }
  328.                                 }
  329.                             }
  330.  
  331.  
  332.                             if (Document.Current.ContractType != "OU")
  333.                             {
  334.                                 if (Document.Current.PurchaseSale == "P")
  335.                                 {
  336.                                     foreach (ArcContractLine oth in contrline1)
  337.                                     {
  338.                                         countlines = countlines + 1;
  339.                                         if (!string.IsNullOrEmpty(oth.POOrderNbr) || !string.IsNullOrEmpty(oth.ReceiptNbr))
  340.                                         {
  341.                                             Document.Current.Status = "CD";
  342.                                             exitendif = true;
  343.                                             if (countlines == contrline1.Count && exitendif)
  344.                                             {
  345.                                                 Document.Current.Status = "DL";
  346.                                                 break;
  347.                                             }
  348.                                             if (countlines == contrline1.Count && !exitendif)
  349.                                             {
  350.                                                 break;
  351.                                             }
  352.                                         }
  353.                                     }
  354.                                 }
  355.  
  356.                                 if (Document.Current.PurchaseSale == "S")
  357.                                 {
  358.                                     foreach (ArcContractLine oth in contrline1)
  359.                                     {
  360.                                         countlines = countlines + 1;
  361.                                         if (!string.IsNullOrEmpty(oth.POOrderNbr) || !string.IsNullOrEmpty(oth.ReceiptNbr))
  362.                                         {
  363.                                             Document.Current.Status = "CD";
  364.                                             exitendif = true;
  365.                                             if (countlines == contrline1.Count && exitendif)
  366.                                             {
  367.                                                 Document.Current.Status = "SH";
  368.                                                 break;
  369.                                             }
  370.                                             if (countlines == contrline1.Count && !exitendif)
  371.                                             {
  372.                                                 break;
  373.                                             }
  374.                                         }
  375.                                     }
  376.                                 }
  377.                             }
  378.  
  379.  
  380.                         }
  381.  
  382.                         else if (numbersofgeneratedsubcontracts > contrline1.Count)
  383.                         {
  384.  
  385.                         }
  386.  
  387.  
  388.  
  389.  
  390.                     }
  391.  
  392.                     else
  393.                     {
  394.                         throw new PXException("Shipping Period End Date Can't be less than Shipping Period Start Date");
  395.                     }
  396.  
  397.  
  398.                 }
  399.                 return adapter.Get();
  400.                 #endregion
  401.             }
  402.             else
  403.             {
  404.                 #region New Logic
  405.                 if (generateWizardFilter.AskExt() == WebDialogResult.OK)
  406.                 {
  407.                     string MonthStart = Document.Current.PeriodStartDateS.Substring(0, 2);
  408.                     if (MonthStart.Substring(0, 1) == "0")
  409.                     {
  410.                         MonthStart = MonthStart.Substring(1, 1);
  411.                     }
  412.                     string YearStart = Document.Current.PeriodStartDateS.Substring(3, 4);
  413.  
  414.  
  415.                     string MonthEnd = Document.Current.PeriodEndDateS.Substring(0, 2);
  416.                     if (MonthEnd.Substring(0, 1) == "0")
  417.                     {
  418.                         MonthEnd = MonthEnd.Substring(1, 1);
  419.                     }
  420.                     string YearEnd = Document.Current.PeriodEndDateS.Substring(3, 4);
  421.  
  422.                     if (Int32.Parse(YearEnd) >= Int32.Parse(YearStart) || (Int32.Parse(YearEnd) >= Int32.Parse(YearStart) && Int32.Parse(MonthEnd) >= Int32.Parse(MonthStart)))
  423.                     {
  424.                         bool flp = false;
  425.                         decimal qty = Document.Current.Quantity.GetValueOrDefault(0);
  426.                         decimal splits = generateWizardFilter.Current.NumOfSubContr.GetValueOrDefault(0);
  427.  
  428.                         PXResultset<ArcContractLine> contrline = PXSelect<ArcContractLine, Where<ArcContractLine.contractNbr, Equal<Current<ArcContract.contractNbr>>>>.Select(this);
  429.                         int linectrm = 0;
  430.                         if (contrline.Count > 0)
  431.                         {
  432.                             foreach (ArcContractLine contractline in contrline)
  433.                             {
  434.                                 if (contractline.SplitNbr.GetValueOrDefault(0) > linectrm && contractline.SplitNbr.GetValueOrDefault(0) != 0)
  435.                                 {
  436.                                     linectrm = contractline.SplitNbr.GetValueOrDefault(0);
  437.                                 }
  438.                             }
  439.                         }
  440.  
  441.                         if (contrline.Count == 0)
  442.                         {
  443.                             linectrm = 0;
  444.                         }
  445.  
  446.                         int numbersofgeneratedsubcontracts = 0;
  447.  
  448.                         foreach (DateTimePair dp in GetDateTimePairs())
  449.                         {
  450.                             ArcContractLine contrLine = generateLine();
  451.                             contrLine.SplitNbr = linectrm + 1;
  452.                             linectrm = linectrm + 1;
  453.                             contrLine.ShipFrom = dp.FromDateTime;
  454.                             contrLine.ShipTo = dp.ToDateTime;
  455.                             contrLine.SplitQty = dp.QtyLeft / splits;
  456.                             contrLine.MarketID = Document.Current.MarketID;
  457.                             contrLine.SwitchCost = Document.Current.SwitchCost;
  458.  
  459.  
  460.                             CTRMOptionality optSingle = GetOptionalitySingle();
  461.  
  462.                             if (optSingle == null)
  463.                                 throw new PXSetPropertyException("Optionality is empty", PXErrorLevel.RowError);
  464.  
  465.                             contrLine.Differential = optSingle.Differential;
  466.                             contrLine.Ratio = optSingle.Ratio;
  467.  
  468.                             if (Document.Current.LocationID.GetValueOrDefault(0) != 0)
  469.                             {
  470.                                 contrLine.DestinationID = Document.Current.LocationID.GetValueOrDefault(0);
  471.                             }
  472.  
  473.                             if (!flp)
  474.                             {
  475.                                 flp = true;
  476.                             }
  477.                             contrLine.PackagingBrandID = Document.Current.PackagingBrandID;
  478.  
  479.                             string ContractType1 = Document.Current.ContractType;
  480.  
  481.                             foreach (PXDataRecord record in PXDatabase.SelectMulti<InventoryItem>
  482.                             (
  483.                                 new PXDataField("UsrPackagingID"),
  484.                                 new PXDataField("UsrPackagingSizeID"),
  485.                                 new PXDataFieldValue("InventoryID", Document.Current.StockItemID)))
  486.                             {
  487.                                 contrLine.PackagingID = record.GetInt32(0);
  488.                                 contrLine.PackagingSizeID = record.GetInt32(1);
  489.                             }
  490.  
  491.                             if (Document.Current.PricingType == "FI")
  492.                             {
  493.                                 decimal CurRate = Document.Current.CuryRate.GetValueOrDefault(1.0m);
  494.  
  495.                                 decimal OutrightPriceCC = GetOutrightPriceCC(-1, CurRate);
  496.                                 contrLine.UnitPrice =
  497.                                     (OutrightPriceCC * Document.Current.Ratio) +
  498.                                     (Document.Current.PricingCCY.GetValueOrDefault(false) ?
  499.                                         GetDifferentialCuryConv(Document.Current.DifferentialRatioValue) :
  500.                                         Document.Current.DifferentialRatioValue);
  501.                             }
  502.                             else
  503.                             {
  504.                                 contrLine.UnitPrice = 0;
  505.                             }
  506.  
  507.                             contrLine.StockItemID = Document.Current.StockItemID;
  508.                             contrLine.StockItemID123 = Document.Current.StockItemID;
  509.  
  510.                             string PremiumCurrency = "";
  511.                             decimal Premium = 0.00m;
  512.                             decimal? Differencial = 0.00m;
  513.                             bool OptionalityNotPresent = true;
  514.                             foreach (PXDataRecord record in PXDatabase.SelectMulti<CTRMOptionality>
  515.                             (
  516.                                 new PXDataField("PremiumCurrency"),
  517.                                 new PXDataField("Premium"),
  518.                                 new PXDataField("Differential"),
  519.                                 new PXDataFieldValue("ContractNbr", Document.Current.ContractNbr),
  520.                                 new PXDataFieldValue("StockItemID", Document.Current.StockItemID)))
  521.                             {
  522.                                 PremiumCurrency = record.GetString(0);
  523.                                 Premium = record.GetDecimal(1).GetValueOrDefault(0);
  524.                                 Differencial = record.GetDecimal(2).GetValueOrDefault(0);
  525.                                 OptionalityNotPresent = false;
  526.                             }
  527.                             if (OptionalityNotPresent)
  528.                                 throw new PXException("Please add optionality to contract!");
  529.  
  530.                             if (Document.Current.PricingType == "FI")
  531.                             {
  532.                                 contrLine.CreatingProcess = true;
  533.  
  534.                                 PXResultset<CTRMOther> ctrmot = PXSelect<CTRMOther, Where<CTRMOther.contractNbr, Equal<Current<ArcContract.contractNbr>>>>.Select(this);
  535.                                 CTRMOther other = new CTRMOther();
  536.                                 bool value = false;
  537.                                 foreach (CTRMOther oth in ctrmot)
  538.                                 {
  539.                                     if (oth.LocationID.GetValueOrDefault(0) == (Document.Current.LocationID.GetValueOrDefault(0)) &&
  540.                                         Document.Current.LocationID.GetValueOrDefault(0) != 0 && !value)
  541.                                     {
  542.                                         other = oth;
  543.                                         decimal CurRate = Document.Current.CuryRate.GetValueOrDefault(1.0m);
  544.                                         decimal OutrightPriceCC = GetOutrightPriceCC(-1, CurRate);
  545.                                         contrLine.UnitPrice = (OutrightPriceCC + Document.Current.Ratio) + (contrLine.PricingCCY.GetValueOrDefault(false) ?
  546.                                         GetDifferentialCuryConv(Differencial) :
  547.                                         Differencial) + Premium + other.Premium.GetValueOrDefault(0);
  548.                                         value = true;
  549.                                     }
  550.                                 }
  551.  
  552.                                 if (!value)
  553.                                 {
  554.                                     decimal CurRate = Document.Current.CuryRate.GetValueOrDefault(1.0m);
  555.                                     decimal OutrightPriceCC = GetOutrightPriceCC(-1, CurRate);
  556.                                     contrLine.UnitPrice = (OutrightPriceCC * Document.Current.Ratio) + (contrLine.PricingCCY.GetValueOrDefault(false) ?
  557.                                         GetDifferentialCuryConv(Differencial) :
  558.                                         Differencial) + Premium;
  559.                                 }
  560.  
  561.                             }
  562.  
  563.                             contrLine.TermsID = Document.Current.TermsID;
  564.                             contrLine.ValuationMonthS = Document.Current.ValuationMonthS;
  565.                             contrLine.FixByDate = Document.Current.FixByDate;
  566.                             contrLine.QtyNotFixed = contrLine.SplitQty;
  567.                             contrLine.QtyNotInvoiced = contrLine.SplitQty;
  568.                             contrLine.QtyNotShipped = contrLine.SplitQty;
  569.  
  570.                             if (Document.Current.PricingType == "FI")
  571.                             {
  572.                                 contrLine.Status = "FD";
  573.                                 contrLine.QtyFixed = contrLine.SplitQty;
  574.                                 contrLine.QtyNotFixed = 0.00m;
  575.  
  576.                             }
  577.                             else
  578.                             {
  579.                                 contrLine.Status = "TF";
  580.                             }
  581.  
  582.  
  583.                             contrLine.ValuationMonthS = Document.Current.ValuationMonthS;
  584.  
  585.                             contrLine.PricingCCY = Document.Current.PricingCCY.GetValueOrDefault();
  586.  
  587.                             if (Document.Current.Crop.GetValueOrDefault(0) > 2000)
  588.                             {
  589.                                 contrLine.Crop = Convert.ToString(Document.Current.Crop.GetValueOrDefault(0));
  590.                             }
  591.  
  592.                             if (Document.Current.Crop.GetValueOrDefault(0) < 2000)
  593.                             {
  594.                                 contrLine.Crop = "";
  595.                             }
  596.                             contrLine = Transactions.Insert(contrLine);
  597.  
  598.                             if (Document.Current.PricingType == "FI")
  599.                             {
  600.  
  601.                                 CTRMPriceFixation ctrm = generatectrm();
  602.                                 ctrm.FixationDate = DateTime.Now;
  603.                                 ctrm.Quantity = contrLine.SplitQty;
  604.                                 ctrm.ContractNumber = contrLine.ContractNbr;
  605.                                 ctrm.SubContractID = contrLine.SplitNbr;
  606.  
  607.                                 PriceFixes.Insert(ctrm);
  608.                             }
  609.                             numbersofgeneratedsubcontracts = numbersofgeneratedsubcontracts + 1;
  610.                         }
  611.  
  612.                         PXResultset<ArcContractLine> contrline1 = PXSelect<ArcContractLine, Where<ArcContractLine.contractNbr, Equal<Current<ArcContract.contractNbr>>>>.Select(this);
  613.  
  614.                         decimal SplitQty = 0.00m;
  615.  
  616.                         foreach (ArcContractLine oth in contrline1)
  617.                         {
  618.                             SplitQty = oth.SplitQty.GetValueOrDefault(0);
  619.                         }
  620.  
  621.                         if (numbersofgeneratedsubcontracts == contrline1.Count)
  622.                         {
  623.                             if (Document.Current.PricingType == "FI" && SplitQty == Document.Current.Quantity.GetValueOrDefault(0))
  624.                             {
  625.                                 Document.Current.Status = "OH";
  626.                             }
  627.                             if (Document.Current.PricingType == "FI" && SplitQty == Document.Current.Quantity.GetValueOrDefault(0))
  628.                             {
  629.                                 Document.Current.Status = "FF";
  630.                             }
  631.                             if (Document.Current.PricingType == "UN")
  632.                             {
  633.                                 Document.Current.Status = "TF";
  634.                             }
  635.                         }
  636.                         else if (numbersofgeneratedsubcontracts < contrline1.Count)
  637.                         {
  638.                             bool exitendif = false;
  639.                             int countlines = 0;
  640.                             if (Document.Current.PricingType == "FI")
  641.                             {
  642.                                 if (Document.Current.PurchaseSale == "P")
  643.                                 {
  644.                                     #region Extra Generate
  645.  
  646.                                     if (Transactions.Select().Count > 0)
  647.                                     {
  648.                                         decimal sunmSplits = Transactions.Select().Sum(x => x.GetItem<ArcContractLine>().SplitQty.GetValueOrDefault());
  649.                                         decimal qtySplit = (Document.Current.Quantity.GetValueOrDefault() - sunmSplits) / generateWizardFilter.Current.NumOfSubContr.GetValueOrDefault();
  650.                                         for (int i = 0; i < generateWizardFilter.Current.NumOfSubContr.GetValueOrDefault(); i++)
  651.                                         {
  652.                                             ArcContractLine prevline = Transactions.Select().LastOrDefault();
  653.                                             ArcContractLine contrLine = generateLine();
  654.                                             contrLine.SplitNbr = linectrm + 1;
  655.                                             linectrm = linectrm + 1;
  656.                                             contrLine.ShipFrom = prevline.ShipFrom;
  657.                                             contrLine.ShipTo = prevline.ShipTo;
  658.                                             contrLine.SplitQty = qtySplit;
  659.                                             contrLine.MarketID = Document.Current.MarketID;
  660.                                             contrLine.SwitchCost = Document.Current.SwitchCost;
  661.  
  662.                                             CTRMOptionality optSingle = GetOptionalitySingle();
  663.  
  664.                                             if (optSingle == null)
  665.                                                 throw new PXSetPropertyException("Optionality is empty", PXErrorLevel.RowError);
  666.  
  667.                                             contrLine.Differential = optSingle.Differential;
  668.                                             contrLine.Ratio = optSingle.Ratio;
  669.  
  670.                                             if (Document.Current.LocationID.GetValueOrDefault(0) != 0)
  671.                                             {
  672.                                                 contrLine.DestinationID = Document.Current.LocationID.GetValueOrDefault(0);
  673.                                             }
  674.  
  675.                                             if (!flp)
  676.                                             {
  677.                                                 flp = true;
  678.                                                 decimal qtydouble = 0;
  679.                                                 decimal SplitQtyDifference = qtydouble % splits;
  680.  
  681.                                                 decimal decimalpart = SplitQtyDifference;
  682.                                                 contrLine.SplitQty += decimalpart;
  683.                                             }
  684.                                             contrLine.PackagingBrandID = Document.Current.PackagingBrandID;
  685.  
  686.                                             foreach (PXDataRecord record in PXDatabase.SelectMulti<InventoryItem>
  687.                                             (
  688.                                                 new PXDataField("UsrPackagingID"),
  689.                                                 new PXDataField("UsrPackagingSizeID"),
  690.                                                 new PXDataFieldValue("InventoryID", Document.Current.StockItemID)))
  691.                                             {
  692.                                                 contrLine.PackagingID = record.GetInt32(0);
  693.                                                 contrLine.PackagingSizeID = record.GetInt32(1);
  694.                                             }
  695.  
  696.                                             if (Document.Current.PricingType == "FI")
  697.                                             {
  698.                                                 decimal CurRate = Document.Current.CuryRate.GetValueOrDefault(1.0m);
  699.  
  700.                                                 decimal OutrightPriceCC = GetOutrightPriceCC(-1, CurRate);
  701.                                                 contrLine.UnitPrice =
  702.                                                     (OutrightPriceCC * Document.Current.Ratio) +
  703.                                                     (Document.Current.PricingCCY.GetValueOrDefault(false) ?
  704.                                                         GetDifferentialCuryConv(Document.Current.DifferentialRatioValue) :
  705.                                                         Document.Current.DifferentialRatioValue);
  706.                                             }
  707.                                             else
  708.                                             {
  709.                                                 contrLine.UnitPrice = 0;
  710.                                             }
  711.  
  712.                                             contrLine.StockItemID = Document.Current.StockItemID;
  713.                                             contrLine.StockItemID123 = Document.Current.StockItemID;
  714.  
  715.                                             string PremiumCurrency = "";
  716.                                             decimal Premium = 0.00m;
  717.                                             decimal? Differencial = 0.00m;
  718.                                             foreach (PXDataRecord record in PXDatabase.SelectMulti<CTRMOptionality>
  719.                                             (
  720.                                                 new PXDataField("PremiumCurrency"),
  721.                                                 new PXDataField("Premium"),
  722.                                                 new PXDataField("Differential"),
  723.                                                 new PXDataFieldValue("ContractNbr", Document.Current.ContractNbr),
  724.                                                 new PXDataFieldValue("StockItemID", Document.Current.StockItemID)))
  725.                                             {
  726.                                                 PremiumCurrency = record.GetString(0);
  727.                                                 Premium = record.GetDecimal(1).GetValueOrDefault(0);
  728.                                                 Differencial = record.GetDecimal(2).GetValueOrDefault(0);
  729.                                             }
  730.  
  731.                                             if (Document.Current.PricingType == "FI")
  732.                                             {
  733.                                                 contrLine.CreatingProcess = true;
  734.  
  735.                                                 PXResultset<CTRMOther> ctrmot = PXSelect<CTRMOther, Where<CTRMOther.contractNbr, Equal<Current<ArcContract.contractNbr>>>>.Select(this);
  736.                                                 CTRMOther other = new CTRMOther();
  737.                                                 bool value = false;
  738.                                                 foreach (CTRMOther oth in ctrmot)
  739.                                                 {
  740.                                                     if (oth.LocationID.GetValueOrDefault(0) == (Document.Current.LocationID.GetValueOrDefault(0)) &&
  741.                                                         Document.Current.LocationID.GetValueOrDefault(0) != 0 && !value)
  742.                                                     {
  743.                                                         other = oth;
  744.                                                         decimal CurRate = Document.Current.CuryRate.GetValueOrDefault(1.0m);
  745.                                                         decimal OutrightPriceCC = GetOutrightPriceCC(-1, CurRate);
  746.                                                         contrLine.UnitPrice = (OutrightPriceCC + Document.Current.Ratio) + (contrLine.PricingCCY.GetValueOrDefault(false) ?
  747.                                                         GetDifferentialCuryConv(Differencial) :
  748.                                                         Differencial) + Premium + other.Premium.GetValueOrDefault(0);
  749.                                                         value = true;
  750.                                                     }
  751.                                                 }
  752.  
  753.                                                 if (!value)
  754.                                                 {
  755.                                                     decimal CurRate = Document.Current.CuryRate.GetValueOrDefault(1.0m);
  756.                                                     decimal OutrightPriceCC = GetOutrightPriceCC(-1, CurRate);
  757.                                                     contrLine.UnitPrice = (OutrightPriceCC * Document.Current.Ratio) + (contrLine.PricingCCY.GetValueOrDefault(false) ?
  758.                                                         GetDifferentialCuryConv(Differencial) :
  759.                                                         Differencial) + Premium;
  760.                                                 }
  761.  
  762.                                             }
  763.  
  764.                                             contrLine.TermsID = Document.Current.TermsID;
  765.                                             contrLine.ValuationMonthS = Document.Current.ValuationMonthS;
  766.                                             contrLine.FixByDate = Document.Current.FixByDate;
  767.                                             contrLine.QtyNotFixed = contrLine.SplitQty;
  768.                                             contrLine.QtyNotInvoiced = contrLine.SplitQty;
  769.                                             contrLine.QtyNotShipped = contrLine.SplitQty;
  770.  
  771.                                             if (Document.Current.PricingType == "FI")
  772.                                             {
  773.                                                 contrLine.Status = "FD";
  774.                                                 contrLine.QtyFixed = contrLine.SplitQty;
  775.                                                 contrLine.QtyNotFixed = 0.00m;
  776.  
  777.                                             }
  778.                                             else
  779.                                             {
  780.                                                 contrLine.Status = "TF";
  781.                                             }
  782.  
  783.  
  784.                                             contrLine.ValuationMonthS = Document.Current.ValuationMonthS;
  785.  
  786.                                             contrLine.PricingCCY = Document.Current.PricingCCY.GetValueOrDefault();
  787.  
  788.                                             if (Document.Current.Crop.GetValueOrDefault(0) > 2000)
  789.                                             {
  790.                                                 contrLine.Crop = Convert.ToString(Document.Current.Crop.GetValueOrDefault(0));
  791.                                             }
  792.  
  793.                                             if (Document.Current.Crop.GetValueOrDefault(0) < 2000)
  794.                                             {
  795.                                                 contrLine.Crop = "";
  796.                                             }
  797.  
  798.                                             contrLine = Transactions.Insert(contrLine);
  799.                                         }
  800.  
  801.                                     }
  802.  
  803.                                     #endregion
  804.                                     else
  805.                                     {
  806.                                         foreach (ArcContractLine oth in contrline1)
  807.                                         {
  808.                                             countlines = countlines + 1;
  809.                                             if (!string.IsNullOrEmpty(oth.POOrderNbr) || !string.IsNullOrEmpty(oth.ReceiptNbr))
  810.                                             {
  811.                                                 Document.Current.Status = "CD";
  812.                                                 exitendif = true;
  813.                                                 if (countlines == contrline1.Count && exitendif)
  814.                                                 {
  815.                                                     Document.Current.Status = "DL";
  816.                                                     break;
  817.                                                 }
  818.                                                 if (countlines == contrline1.Count && !exitendif)
  819.                                                 {
  820.                                                     break;
  821.                                                 }
  822.                                             }
  823.                                         }
  824.                                     }
  825.                                 }
  826.  
  827.                                 if (Document.Current.PurchaseSale == "S")
  828.                                 {
  829.                                     #region Extra Generate
  830.  
  831.                                     if (Transactions.Select().Count > 0)
  832.                                     {
  833.                                         decimal sunmSplits = Transactions.Select().Sum(x => x.GetItem<ArcContractLine>().SplitQty.GetValueOrDefault());
  834.                                         decimal qtySplit = (Document.Current.Quantity.GetValueOrDefault() - sunmSplits) / generateWizardFilter.Current.NumOfSubContr.GetValueOrDefault();
  835.                                         for (int i = 0; i < generateWizardFilter.Current.NumOfSubContr.GetValueOrDefault(); i++)
  836.                                         {
  837.                                             ArcContractLine prevline = Transactions.Select().LastOrDefault();
  838.                                             ArcContractLine contrLine = generateLine();
  839.                                             contrLine.SplitNbr = linectrm + 1;
  840.                                             linectrm = linectrm + 1;
  841.                                             contrLine.ShipFrom = prevline.ShipFrom;
  842.                                             contrLine.ShipTo = prevline.ShipTo;
  843.                                             contrLine.SplitQty = qtySplit;
  844.                                             contrLine.MarketID = Document.Current.MarketID;
  845.                                             contrLine.SwitchCost = Document.Current.SwitchCost;
  846.  
  847.                                             CTRMOptionality optSingle = GetOptionalitySingle();
  848.  
  849.                                             if (optSingle == null)
  850.                                                 throw new PXSetPropertyException("Optionality is empty", PXErrorLevel.RowError);
  851.  
  852.                                             contrLine.Differential = optSingle.Differential;
  853.                                             contrLine.Ratio = optSingle.Ratio;
  854.  
  855.                                             if (Document.Current.LocationID.GetValueOrDefault(0) != 0)
  856.                                             {
  857.                                                 contrLine.DestinationID = Document.Current.LocationID.GetValueOrDefault(0);
  858.                                             }
  859.  
  860.                                             if (!flp)
  861.                                             {
  862.                                                 flp = true;
  863.                                                 decimal qtydouble = 0;
  864.                                                 decimal SplitQtyDifference = qtydouble % splits;
  865.  
  866.                                                 decimal decimalpart = SplitQtyDifference;
  867.                                                 contrLine.SplitQty += decimalpart;
  868.                                             }
  869.                                             contrLine.PackagingBrandID = Document.Current.PackagingBrandID;
  870.  
  871.                                             foreach (PXDataRecord record in PXDatabase.SelectMulti<InventoryItem>
  872.                                             (
  873.                                                 new PXDataField("UsrPackagingID"),
  874.                                                 new PXDataField("UsrPackagingSizeID"),
  875.                                                 new PXDataFieldValue("InventoryID", Document.Current.StockItemID)))
  876.                                             {
  877.                                                 contrLine.PackagingID = record.GetInt32(0);
  878.                                                 contrLine.PackagingSizeID = record.GetInt32(1);
  879.                                             }
  880.  
  881.                                             if (Document.Current.PricingType == "FI")
  882.                                             {
  883.                                                 decimal CurRate = Document.Current.CuryRate.GetValueOrDefault(1.0m);
  884.  
  885.                                                 decimal OutrightPriceCC = GetOutrightPriceCC(-1, CurRate);
  886.                                                 contrLine.UnitPrice =
  887.                                                     (OutrightPriceCC * Document.Current.Ratio) +
  888.                                                     (Document.Current.PricingCCY.GetValueOrDefault(false) ?
  889.                                                         GetDifferentialCuryConv(Document.Current.DifferentialRatioValue) :
  890.                                                         Document.Current.DifferentialRatioValue);
  891.                                             }
  892.                                             else
  893.                                             {
  894.                                                 contrLine.UnitPrice = 0;
  895.                                             }
  896.  
  897.                                             contrLine.StockItemID = Document.Current.StockItemID;
  898.                                             contrLine.StockItemID123 = Document.Current.StockItemID;
  899.  
  900.                                             string PremiumCurrency = "";
  901.                                             decimal Premium = 0.00m;
  902.                                             decimal? Differencial = 0.00m;
  903.                                             foreach (PXDataRecord record in PXDatabase.SelectMulti<CTRMOptionality>
  904.                                             (
  905.                                                 new PXDataField("PremiumCurrency"),
  906.                                                 new PXDataField("Premium"),
  907.                                                 new PXDataField("Differential"),
  908.                                                 new PXDataFieldValue("ContractNbr", Document.Current.ContractNbr),
  909.                                                 new PXDataFieldValue("StockItemID", Document.Current.StockItemID)))
  910.                                             {
  911.                                                 PremiumCurrency = record.GetString(0);
  912.                                                 Premium = record.GetDecimal(1).GetValueOrDefault(0);
  913.                                                 Differencial = record.GetDecimal(2).GetValueOrDefault(0);
  914.                                             }
  915.  
  916.                                             if (Document.Current.PricingType == "FI")
  917.                                             {
  918.                                                 contrLine.CreatingProcess = true;
  919.  
  920.                                                 PXResultset<CTRMOther> ctrmot = PXSelect<CTRMOther, Where<CTRMOther.contractNbr, Equal<Current<ArcContract.contractNbr>>>>.Select(this);
  921.                                                 CTRMOther other = new CTRMOther();
  922.                                                 bool value = false;
  923.                                                 foreach (CTRMOther oth in ctrmot)
  924.                                                 {
  925.                                                     if (oth.LocationID.GetValueOrDefault(0) == (Document.Current.LocationID.GetValueOrDefault(0)) &&
  926.                                                         Document.Current.LocationID.GetValueOrDefault(0) != 0 && !value)
  927.                                                     {
  928.                                                         other = oth;
  929.                                                         decimal CurRate = Document.Current.CuryRate.GetValueOrDefault(1.0m);
  930.                                                         decimal OutrightPriceCC = GetOutrightPriceCC(-1, CurRate);
  931.                                                         contrLine.UnitPrice = (OutrightPriceCC + Document.Current.Ratio) + (contrLine.PricingCCY.GetValueOrDefault(false) ?
  932.                                                         GetDifferentialCuryConv(Differencial) :
  933.                                                         Differencial) + Premium + other.Premium.GetValueOrDefault(0);
  934.                                                         value = true;
  935.                                                     }
  936.                                                 }
  937.  
  938.                                                 if (!value)
  939.                                                 {
  940.                                                     decimal CurRate = Document.Current.CuryRate.GetValueOrDefault(1.0m);
  941.                                                     decimal OutrightPriceCC = GetOutrightPriceCC(-1, CurRate);
  942.                                                     contrLine.UnitPrice = (OutrightPriceCC * Document.Current.Ratio) + (contrLine.PricingCCY.GetValueOrDefault(false) ?
  943.                                                         GetDifferentialCuryConv(Differencial) :
  944.                                                         Differencial) + Premium;
  945.                                                 }
  946.  
  947.                                             }
  948.  
  949.                                             contrLine.TermsID = Document.Current.TermsID;
  950.                                             contrLine.ValuationMonthS = Document.Current.ValuationMonthS;
  951.                                             contrLine.FixByDate = Document.Current.FixByDate;
  952.                                             contrLine.QtyNotFixed = contrLine.SplitQty;
  953.                                             contrLine.QtyNotInvoiced = contrLine.SplitQty;
  954.                                             contrLine.QtyNotShipped = contrLine.SplitQty;
  955.  
  956.                                             if (Document.Current.PricingType == "FI")
  957.                                             {
  958.                                                 contrLine.Status = "FD";
  959.                                                 contrLine.QtyFixed = contrLine.SplitQty;
  960.                                                 contrLine.QtyNotFixed = 0.00m;
  961.  
  962.                                             }
  963.                                             else
  964.                                             {
  965.                                                 contrLine.Status = "TF";
  966.                                             }
  967.  
  968.  
  969.                                             contrLine.ValuationMonthS = Document.Current.ValuationMonthS;
  970.  
  971.                                             contrLine.PricingCCY = Document.Current.PricingCCY.GetValueOrDefault();
  972.  
  973.                                             if (Document.Current.Crop.GetValueOrDefault(0) > 2000)
  974.                                             {
  975.                                                 contrLine.Crop = Convert.ToString(Document.Current.Crop.GetValueOrDefault(0));
  976.                                             }
  977.  
  978.                                             if (Document.Current.Crop.GetValueOrDefault(0) < 2000)
  979.                                             {
  980.                                                 contrLine.Crop = "";
  981.                                             }
  982.  
  983.                                             contrLine = Transactions.Insert(contrLine);
  984.                                         }
  985.  
  986.                                     }
  987.  
  988.                                     #endregion
  989.                                     else
  990.                                     {
  991.                                         foreach (ArcContractLine oth in contrline1)
  992.                                         {
  993.                                             countlines = countlines + 1;
  994.                                             if (!string.IsNullOrEmpty(oth.POOrderNbr) || !string.IsNullOrEmpty(oth.ReceiptNbr))
  995.                                             {
  996.                                                 Document.Current.Status = "CD";
  997.                                                 exitendif = true;
  998.                                                 if (countlines == contrline1.Count && exitendif)
  999.                                                 {
  1000.                                                     Document.Current.Status = "SH";
  1001.                                                     break;
  1002.                                                 }
  1003.                                                 if (countlines == contrline1.Count && !exitendif)
  1004.                                                 {
  1005.                                                     break;
  1006.                                                 }
  1007.                                             }
  1008.                                         }
  1009.                                     }
  1010.                                 }
  1011.                             }
  1012.  
  1013.                             if (Document.Current.PricingType == "UN")
  1014.                             {
  1015.                                 if (Document.Current.PurchaseSale == "P")
  1016.                                 {
  1017.                                     #region Extra Generate
  1018.  
  1019.                                     if (Transactions.Select().Count > 0)
  1020.                                     {
  1021.                                         decimal sunmSplits = Transactions.Select().Sum(x => x.GetItem<ArcContractLine>().SplitQty.GetValueOrDefault());
  1022.                                         decimal qtySplit = (Document.Current.Quantity.GetValueOrDefault() - sunmSplits) / generateWizardFilter.Current.NumOfSubContr.GetValueOrDefault();
  1023.                                         for (int i = 0; i < generateWizardFilter.Current.NumOfSubContr.GetValueOrDefault(); i++)
  1024.                                         {
  1025.                                             ArcContractLine prevline = Transactions.Select().LastOrDefault();
  1026.                                             ArcContractLine contrLine = generateLine();
  1027.                                             contrLine.SplitNbr = linectrm + 1;
  1028.                                             linectrm = linectrm + 1;
  1029.                                             contrLine.ShipFrom = prevline.ShipFrom;
  1030.                                             contrLine.ShipTo = prevline.ShipTo;
  1031.                                             contrLine.SplitQty = qtySplit;
  1032.                                             contrLine.MarketID = Document.Current.MarketID;
  1033.                                             contrLine.SwitchCost = Document.Current.SwitchCost;
  1034.  
  1035.                                             CTRMOptionality optSingle = GetOptionalitySingle();
  1036.  
  1037.                                             if (optSingle == null)
  1038.                                                 throw new PXSetPropertyException("Optionality is empty", PXErrorLevel.RowError);
  1039.  
  1040.                                             contrLine.Differential = optSingle.Differential;
  1041.                                             contrLine.Ratio = optSingle.Ratio;
  1042.  
  1043.                                             if (Document.Current.LocationID.GetValueOrDefault(0) != 0)
  1044.                                             {
  1045.                                                 contrLine.DestinationID = Document.Current.LocationID.GetValueOrDefault(0);
  1046.                                             }
  1047.  
  1048.                                             if (!flp)
  1049.                                             {
  1050.                                                 flp = true;
  1051.                                                 decimal qtydouble = 0;
  1052.                                                 decimal SplitQtyDifference = qtydouble % splits;
  1053.  
  1054.                                                 decimal decimalpart = SplitQtyDifference;
  1055.                                                 contrLine.SplitQty += decimalpart;
  1056.                                             }
  1057.                                             contrLine.PackagingBrandID = Document.Current.PackagingBrandID;
  1058.  
  1059.                                             foreach (PXDataRecord record in PXDatabase.SelectMulti<InventoryItem>
  1060.                                             (
  1061.                                                 new PXDataField("UsrPackagingID"),
  1062.                                                 new PXDataField("UsrPackagingSizeID"),
  1063.                                                 new PXDataFieldValue("InventoryID", Document.Current.StockItemID)))
  1064.                                             {
  1065.                                                 contrLine.PackagingID = record.GetInt32(0);
  1066.                                                 contrLine.PackagingSizeID = record.GetInt32(1);
  1067.                                             }
  1068.  
  1069.                                             if (Document.Current.PricingType == "FI")
  1070.                                             {
  1071.                                                 decimal CurRate = Document.Current.CuryRate.GetValueOrDefault(1.0m);
  1072.  
  1073.                                                 decimal OutrightPriceCC = GetOutrightPriceCC(-1, CurRate);
  1074.                                                 contrLine.UnitPrice =
  1075.                                                     (OutrightPriceCC * Document.Current.Ratio) +
  1076.                                                     (Document.Current.PricingCCY.GetValueOrDefault(false) ?
  1077.                                                         GetDifferentialCuryConv(Document.Current.DifferentialRatioValue) :
  1078.                                                         Document.Current.DifferentialRatioValue);
  1079.                                             }
  1080.                                             else
  1081.                                             {
  1082.                                                 contrLine.UnitPrice = 0;
  1083.                                             }
  1084.  
  1085.                                             contrLine.StockItemID = Document.Current.StockItemID;
  1086.                                             contrLine.StockItemID123 = Document.Current.StockItemID;
  1087.  
  1088.                                             string PremiumCurrency = "";
  1089.                                             decimal Premium = 0.00m;
  1090.                                             decimal? Differencial = 0.00m;
  1091.                                             foreach (PXDataRecord record in PXDatabase.SelectMulti<CTRMOptionality>
  1092.                                             (
  1093.                                                 new PXDataField("PremiumCurrency"),
  1094.                                                 new PXDataField("Premium"),
  1095.                                                 new PXDataField("Differential"),
  1096.                                                 new PXDataFieldValue("ContractNbr", Document.Current.ContractNbr),
  1097.                                                 new PXDataFieldValue("StockItemID", Document.Current.StockItemID)))
  1098.                                             {
  1099.                                                 PremiumCurrency = record.GetString(0);
  1100.                                                 Premium = record.GetDecimal(1).GetValueOrDefault(0);
  1101.                                                 Differencial = record.GetDecimal(2).GetValueOrDefault(0);
  1102.                                             }
  1103.  
  1104.                                             if (Document.Current.PricingType == "FI")
  1105.                                             {
  1106.                                                 contrLine.CreatingProcess = true;
  1107.  
  1108.                                                 PXResultset<CTRMOther> ctrmot = PXSelect<CTRMOther, Where<CTRMOther.contractNbr, Equal<Current<ArcContract.contractNbr>>>>.Select(this);
  1109.                                                 CTRMOther other = new CTRMOther();
  1110.                                                 bool value = false;
  1111.                                                 foreach (CTRMOther oth in ctrmot)
  1112.                                                 {
  1113.                                                     if (oth.LocationID.GetValueOrDefault(0) == (Document.Current.LocationID.GetValueOrDefault(0)) &&
  1114.                                                         Document.Current.LocationID.GetValueOrDefault(0) != 0 && !value)
  1115.                                                     {
  1116.                                                         other = oth;
  1117.                                                         decimal CurRate = Document.Current.CuryRate.GetValueOrDefault(1.0m);
  1118.                                                         decimal OutrightPriceCC = GetOutrightPriceCC(-1, CurRate);
  1119.                                                         contrLine.UnitPrice = (OutrightPriceCC + Document.Current.Ratio) + (contrLine.PricingCCY.GetValueOrDefault(false) ?
  1120.                                                         GetDifferentialCuryConv(Differencial) :
  1121.                                                         Differencial) + Premium + other.Premium.GetValueOrDefault(0);
  1122.                                                         value = true;
  1123.                                                     }
  1124.                                                 }
  1125.  
  1126.                                                 if (!value)
  1127.                                                 {
  1128.                                                     decimal CurRate = Document.Current.CuryRate.GetValueOrDefault(1.0m);
  1129.                                                     decimal OutrightPriceCC = GetOutrightPriceCC(-1, CurRate);
  1130.                                                     contrLine.UnitPrice = (OutrightPriceCC * Document.Current.Ratio) + (contrLine.PricingCCY.GetValueOrDefault(false) ?
  1131.                                                         GetDifferentialCuryConv(Differencial) :
  1132.                                                         Differencial) + Premium;
  1133.                                                 }
  1134.  
  1135.                                             }
  1136.  
  1137.                                             contrLine.TermsID = Document.Current.TermsID;
  1138.                                             contrLine.ValuationMonthS = Document.Current.ValuationMonthS;
  1139.                                             contrLine.FixByDate = Document.Current.FixByDate;
  1140.                                             contrLine.QtyNotFixed = contrLine.SplitQty;
  1141.                                             contrLine.QtyNotInvoiced = contrLine.SplitQty;
  1142.                                             contrLine.QtyNotShipped = contrLine.SplitQty;
  1143.  
  1144.                                             if (Document.Current.PricingType == "FI")
  1145.                                             {
  1146.                                                 contrLine.Status = "FD";
  1147.                                                 contrLine.QtyFixed = contrLine.SplitQty;
  1148.                                                 contrLine.QtyNotFixed = 0.00m;
  1149.  
  1150.                                             }
  1151.                                             else
  1152.                                             {
  1153.                                                 contrLine.Status = "TF";
  1154.                                             }
  1155.  
  1156.  
  1157.                                             contrLine.ValuationMonthS = Document.Current.ValuationMonthS;
  1158.  
  1159.                                             contrLine.PricingCCY = Document.Current.PricingCCY.GetValueOrDefault();
  1160.  
  1161.                                             if (Document.Current.Crop.GetValueOrDefault(0) > 2000)
  1162.                                             {
  1163.                                                 contrLine.Crop = Convert.ToString(Document.Current.Crop.GetValueOrDefault(0));
  1164.                                             }
  1165.  
  1166.                                             if (Document.Current.Crop.GetValueOrDefault(0) < 2000)
  1167.                                             {
  1168.                                                 contrLine.Crop = "";
  1169.                                             }
  1170.  
  1171.                                             contrLine = Transactions.Insert(contrLine);
  1172.                                         }
  1173.  
  1174.                                     }
  1175.  
  1176.                                     #endregion
  1177.                                     else
  1178.                                     {
  1179.                                         foreach (ArcContractLine oth in contrline1)
  1180.                                         {
  1181.                                             countlines = countlines + 1;
  1182.                                             if (!string.IsNullOrEmpty(oth.POOrderNbr) || !string.IsNullOrEmpty(oth.ReceiptNbr))
  1183.                                             {
  1184.                                                 Document.Current.Status = "CD";
  1185.                                                 exitendif = true;
  1186.                                                 if (countlines == contrline1.Count && exitendif)
  1187.                                                 {
  1188.                                                     Document.Current.Status = "DL";
  1189.                                                     break;
  1190.                                                 }
  1191.                                                 if (countlines == contrline1.Count && !exitendif)
  1192.                                                 {
  1193.                                                     break;
  1194.                                                 }
  1195.                                             }
  1196.                                         }
  1197.                                     }
  1198.                                 }
  1199.                                 if (Document.Current.PurchaseSale == "S")
  1200.                                 {
  1201.                                     #region Extra Generate
  1202.  
  1203.                                     if (Transactions.Select().Count > 0)
  1204.                                     {
  1205.                                         decimal sunmSplits = Transactions.Select().Sum(x => x.GetItem<ArcContractLine>().SplitQty.GetValueOrDefault());
  1206.                                         decimal qtySplit = (Document.Current.Quantity.GetValueOrDefault() - sunmSplits) / generateWizardFilter.Current.NumOfSubContr.GetValueOrDefault();
  1207.                                         for (int i = 0; i < generateWizardFilter.Current.NumOfSubContr.GetValueOrDefault(); i++)
  1208.                                         {
  1209.                                             ArcContractLine prevline = Transactions.Select().LastOrDefault();
  1210.                                             ArcContractLine contrLine = generateLine();
  1211.                                             contrLine.SplitNbr = linectrm + 1;
  1212.                                             linectrm = linectrm + 1;
  1213.                                             contrLine.ShipFrom = prevline.ShipFrom;
  1214.                                             contrLine.ShipTo = prevline.ShipTo;
  1215.                                             contrLine.SplitQty = qtySplit;
  1216.                                             contrLine.MarketID = Document.Current.MarketID;
  1217.                                             contrLine.SwitchCost = Document.Current.SwitchCost;
  1218.  
  1219.                                             CTRMOptionality optSingle = GetOptionalitySingle();
  1220.  
  1221.                                             if (optSingle == null)
  1222.                                                 throw new PXSetPropertyException("Optionality is empty", PXErrorLevel.RowError);
  1223.  
  1224.                                             contrLine.Differential = optSingle.Differential;
  1225.                                             contrLine.Ratio = optSingle.Ratio;
  1226.  
  1227.                                             if (Document.Current.LocationID.GetValueOrDefault(0) != 0)
  1228.                                             {
  1229.                                                 contrLine.DestinationID = Document.Current.LocationID.GetValueOrDefault(0);
  1230.                                             }
  1231.  
  1232.                                             if (!flp)
  1233.                                             {
  1234.                                                 flp = true;
  1235.                                                 decimal qtydouble = 0;
  1236.                                                 decimal SplitQtyDifference = qtydouble % splits;
  1237.  
  1238.                                                 decimal decimalpart = SplitQtyDifference;
  1239.                                                 contrLine.SplitQty += decimalpart;
  1240.                                             }
  1241.                                             contrLine.PackagingBrandID = Document.Current.PackagingBrandID;
  1242.  
  1243.                                             foreach (PXDataRecord record in PXDatabase.SelectMulti<InventoryItem>
  1244.                                             (
  1245.                                                 new PXDataField("UsrPackagingID"),
  1246.                                                 new PXDataField("UsrPackagingSizeID"),
  1247.                                                 new PXDataFieldValue("InventoryID", Document.Current.StockItemID)))
  1248.                                             {
  1249.                                                 contrLine.PackagingID = record.GetInt32(0);
  1250.                                                 contrLine.PackagingSizeID = record.GetInt32(1);
  1251.                                             }
  1252.  
  1253.                                             if (Document.Current.PricingType == "FI")
  1254.                                             {
  1255.                                                 decimal CurRate = Document.Current.CuryRate.GetValueOrDefault(1.0m);
  1256.  
  1257.                                                 decimal OutrightPriceCC = GetOutrightPriceCC(-1, CurRate);
  1258.                                                 contrLine.UnitPrice =
  1259.                                                     (OutrightPriceCC * Document.Current.Ratio) +
  1260.                                                     (Document.Current.PricingCCY.GetValueOrDefault(false) ?
  1261.                                                         GetDifferentialCuryConv(Document.Current.DifferentialRatioValue) :
  1262.                                                         Document.Current.DifferentialRatioValue);
  1263.                                             }
  1264.                                             else
  1265.                                             {
  1266.                                                 contrLine.UnitPrice = 0;
  1267.                                             }
  1268.  
  1269.                                             contrLine.StockItemID = Document.Current.StockItemID;
  1270.                                             contrLine.StockItemID123 = Document.Current.StockItemID;
  1271.  
  1272.                                             string PremiumCurrency = "";
  1273.                                             decimal Premium = 0.00m;
  1274.                                             decimal? Differencial = 0.00m;
  1275.                                             foreach (PXDataRecord record in PXDatabase.SelectMulti<CTRMOptionality>
  1276.                                             (
  1277.                                                 new PXDataField("PremiumCurrency"),
  1278.                                                 new PXDataField("Premium"),
  1279.                                                 new PXDataField("Differential"),
  1280.                                                 new PXDataFieldValue("ContractNbr", Document.Current.ContractNbr),
  1281.                                                 new PXDataFieldValue("StockItemID", Document.Current.StockItemID)))
  1282.                                             {
  1283.                                                 PremiumCurrency = record.GetString(0);
  1284.                                                 Premium = record.GetDecimal(1).GetValueOrDefault(0);
  1285.                                                 Differencial = record.GetDecimal(2).GetValueOrDefault(0);
  1286.                                             }
  1287.  
  1288.                                             if (Document.Current.PricingType == "FI")
  1289.                                             {
  1290.                                                 contrLine.CreatingProcess = true;
  1291.  
  1292.                                                 PXResultset<CTRMOther> ctrmot = PXSelect<CTRMOther, Where<CTRMOther.contractNbr, Equal<Current<ArcContract.contractNbr>>>>.Select(this);
  1293.                                                 CTRMOther other = new CTRMOther();
  1294.                                                 bool value = false;
  1295.                                                 foreach (CTRMOther oth in ctrmot)
  1296.                                                 {
  1297.                                                     if (oth.LocationID.GetValueOrDefault(0) == (Document.Current.LocationID.GetValueOrDefault(0)) &&
  1298.                                                         Document.Current.LocationID.GetValueOrDefault(0) != 0 && !value)
  1299.                                                     {
  1300.                                                         other = oth;
  1301.                                                         decimal CurRate = Document.Current.CuryRate.GetValueOrDefault(1.0m);
  1302.                                                         decimal OutrightPriceCC = GetOutrightPriceCC(-1, CurRate);
  1303.                                                         contrLine.UnitPrice = (OutrightPriceCC + Document.Current.Ratio) + (contrLine.PricingCCY.GetValueOrDefault(false) ?
  1304.                                                         GetDifferentialCuryConv(Differencial) :
  1305.                                                         Differencial) + Premium + other.Premium.GetValueOrDefault(0);
  1306.                                                         value = true;
  1307.                                                     }
  1308.                                                 }
  1309.  
  1310.                                                 if (!value)
  1311.                                                 {
  1312.                                                     decimal CurRate = Document.Current.CuryRate.GetValueOrDefault(1.0m);
  1313.                                                     decimal OutrightPriceCC = GetOutrightPriceCC(-1, CurRate);
  1314.                                                     contrLine.UnitPrice = (OutrightPriceCC * Document.Current.Ratio) + (contrLine.PricingCCY.GetValueOrDefault(false) ?
  1315.                                                         GetDifferentialCuryConv(Differencial) :
  1316.                                                         Differencial) + Premium;
  1317.                                                 }
  1318.  
  1319.                                             }
  1320.  
  1321.                                             contrLine.TermsID = Document.Current.TermsID;
  1322.                                             contrLine.ValuationMonthS = Document.Current.ValuationMonthS;
  1323.                                             contrLine.FixByDate = Document.Current.FixByDate;
  1324.                                             contrLine.QtyNotFixed = contrLine.SplitQty;
  1325.                                             contrLine.QtyNotInvoiced = contrLine.SplitQty;
  1326.                                             contrLine.QtyNotShipped = contrLine.SplitQty;
  1327.  
  1328.                                             if (Document.Current.PricingType == "FI")
  1329.                                             {
  1330.                                                 contrLine.Status = "FD";
  1331.                                                 contrLine.QtyFixed = contrLine.SplitQty;
  1332.                                                 contrLine.QtyNotFixed = 0.00m;
  1333.  
  1334.                                             }
  1335.                                             else
  1336.                                             {
  1337.                                                 contrLine.Status = "TF";
  1338.                                             }
  1339.  
  1340.  
  1341.                                             contrLine.ValuationMonthS = Document.Current.ValuationMonthS;
  1342.  
  1343.                                             contrLine.PricingCCY = Document.Current.PricingCCY.GetValueOrDefault();
  1344.  
  1345.                                             if (Document.Current.Crop.GetValueOrDefault(0) > 2000)
  1346.                                             {
  1347.                                                 contrLine.Crop = Convert.ToString(Document.Current.Crop.GetValueOrDefault(0));
  1348.                                             }
  1349.  
  1350.                                             if (Document.Current.Crop.GetValueOrDefault(0) < 2000)
  1351.                                             {
  1352.                                                 contrLine.Crop = "";
  1353.                                             }
  1354.  
  1355.                                             contrLine = Transactions.Insert(contrLine);
  1356.                                         }
  1357.  
  1358.                                     }
  1359.  
  1360.                                     #endregion
  1361.                                     else
  1362.                                     {
  1363.                                         foreach (ArcContractLine oth in contrline1)
  1364.                                         {
  1365.                                             countlines = countlines + 1;
  1366.                                             if (!string.IsNullOrEmpty(oth.POOrderNbr) || !string.IsNullOrEmpty(oth.ReceiptNbr))
  1367.                                             {
  1368.                                                 Document.Current.Status = "CD";
  1369.                                                 exitendif = true;
  1370.                                                 if (countlines == contrline1.Count && exitendif)
  1371.                                                 {
  1372.                                                     Document.Current.Status = "SH";
  1373.                                                     break;
  1374.                                                 }
  1375.                                                 if (countlines == contrline1.Count && !exitendif)
  1376.                                                 {
  1377.                                                     break;
  1378.                                                 }
  1379.                                             }
  1380.                                         }
  1381.                                     }
  1382.                                 }
  1383.                             }
  1384.                         }
  1385.                     }
  1386.                     else
  1387.                     {
  1388.                         throw new PXException("Shipping Period End Date Can't be less than Shipping Period Start Date");
  1389.                     }
  1390.                 }
  1391.                 return adapter.Get();
  1392.                 #endregion
  1393.             }
  1394.         }
  1395.  
Advertisement
Add Comment
Please, Sign In to add comment