Conversion with Compatibility code issue

That worked great Jose! Thank you very much!

Larry Jedik

I have an issue I need to resolve while in the Method Directives Maintenance

 

Please let me know if anyone can assist with this error.

 

Error CS0234: The type or namespace name 'AccumulateMinimum' does not exist in the namespace 'Compatibility' (are you missing an assembly reference?) [SplitJob.ProcessSplitJob.cs(187,23)]

 

We have added the Compatibility.dll as an assembly reference and still get this error.

 

Converted C# Code:

 

int CurrMtlSeq = 0;

decimal lNumber01 = decimal.Zero;

decimal lNumber02 = decimal.Zero;

decimal lNumber03 = decimal.Zero;

decimal lNumber04 = decimal.Zero;

decimal lNumber05 = decimal.Zero;

decimal lNumber06 = decimal.Zero;

decimal lNumber07 = decimal.Zero;

decimal lNumber08 = decimal.Zero;

Erp.Tables.JobMtl JobMtl;

CurrMtlSeq = 0;

while (true)

{

    foreach (var JobMtl_iterator in (from JobMtl_Row in Db.JobMtl

                                     where JobMtl_Row.JobNum == ipJobNum && JobMtl_Row.MtlSeq > CurrMtlSeq

                                     select JobMtl_Row))

    {

        JobMtl = JobMtl_iterator;

        Compatibility.AccumulateMinimum(JobMtl.MtlSeq);

    }

    if ((Compatibility.AccumulateMinimum(JobMtl.MtlSeq)) >= null)

    {

        break;

    }

    CurrMtlSeq = (Compatibility.AccumulateMinimum(JobMtl.MtlSeq));

    foreach (var JobMtl_iterator in (from JobMtl_Row in Db.JobMtl

                                     where JobMtl_Row.JobNum == ipJobNum && JobMtl_Row.MtlSeq == CurrMtlSeq

                                     select JobMtl_Row))

    {

        JobMtl = JobMtl_iterator;

        lNumber01 = (decimal)JobMtl["Number01"];

        lNumber02 = (decimal)JobMtl["Number02"];

        lNumber03 = (decimal)JobMtl["Number03"];

        lNumber04 = (decimal)JobMtl["Number04"];

        lNumber05 = (decimal)JobMtl["Number05"];

        lNumber06 = (decimal)JobMtl["Number06"];

        lNumber07 = (decimal)JobMtl["Number07"];

        lNumber08 = (decimal)JobMtl["Number08"];

    }

    foreach (var JobMtl_iterator in (from JobMtl_Row in Db.JobMtl

                                     where JobMtl_Row.JobNum == ipNewJobNum && JobMtl_Row.MtlSeq == CurrMtlSeq

                                     select JobMtl_Row))

    {

        JobMtl = JobMtl_iterator;

        JobMtl.Number01 = lNumber01;

        JobMtl.Number02 = lNumber02;

        JobMtl.Number03 = lNumber03;

        JobMtl.Number04 = lNumber04;

        JobMtl.Number05 = lNumber05;

        JobMtl.Number06 = lNumber06;

        JobMtl.Number07 = lNumber07;

        JobMtl.Number08 = lNumber08;

    }

}


the compatibility class is really a patch job, you really want to just correct that to use the proper linq syntax for Min, Max etc. Do a quick google search for Linq MIN / MAX / AVG
It looks like you are using their code converter, I hilight suggest you take your old 4GL code and conver it yourself or at the very least modify what Epicor Produces. The "converted" code is not very good. If you want paste your 4GL for this method and I'll give you some pointers.


Jose C Gomez
Software Engineer


T: 904.469.1524 mobile

Quis custodiet ipsos custodes?

On Wed, Dec 30, 2015 at 4:14 PM, larry.jedik@... [vantage] <vantage@yahoogroups.com> wrote:

Â
<div>
  
  
  <p></p><p class="ygrps-yiv-244267344MsoNormal"><span style="font-family:verdana, HelveticaNeue,;">I have an issue I need to

resolve while in the Method Directives
Maintenance

Â

Please let me know if anyone can
assist with this error.

Â

Error CS0234: The type or
namespace name 'AccumulateMinimum' does not exist in the namespace
'Compatibility' (are you missing an assembly reference?)
[SplitJob.ProcessSplitJob.cs(187,23)]

Â

We have added the
Compatibility.dll as an assembly reference and still get this error.

Â

Converted C# Code:

Â

int CurrMtlSeq = 0;

decimal lNumber01 =
decimal.Zero;

decimal lNumber02 =
decimal.Zero;

decimal lNumber03 =
decimal.Zero;

decimal lNumber04 =
decimal.Zero;

decimal lNumber05 =
decimal.Zero;

decimal lNumber06 =
decimal.Zero;

decimal lNumber07 =
decimal.Zero;

decimal lNumber08 =
decimal.Zero;

Erp.Tables.JobMtl JobMtl;

CurrMtlSeq = 0;

while (true)

{

   foreach (var
JobMtl_iterator in (from JobMtl_Row in Db.JobMtl

                                   Â
where JobMtl_Row.JobNum == ipJobNum && JobMtl_Row.MtlSeq >
CurrMtlSeq

                                   Â
select JobMtl_Row))

   {

      Â
JobMtl = JobMtl_iterator;

      Â
Compatibility.AccumulateMinimum(JobMtl.MtlSeq);

   }

   if
((Compatibility.AccumulateMinimum(JobMtl.MtlSeq)) >= null)

   {

      Â
break;

   }

   CurrMtlSeq =
(Compatibility.AccumulateMinimum(JobMtl.MtlSeq));

   foreach (var
JobMtl_iterator in (from JobMtl_Row in Db.JobMtl

                                   Â
where JobMtl_Row.JobNum == ipJobNum && JobMtl_Row.MtlSeq == CurrMtlSeq

                                   Â
select JobMtl_Row))

   {

      Â
JobMtl = JobMtl_iterator;

      Â
lNumber01 = (decimal)JobMtl["Number01"];

      Â
lNumber02 = (decimal)JobMtl["Number02"];

      Â
lNumber03 = (decimal)JobMtl["Number03"];

      Â
lNumber04 = (decimal)JobMtl["Number04"];

      Â
lNumber05 = (decimal)JobMtl["Number05"];

      Â
lNumber06 = (decimal)JobMtl["Number06"];

      Â
lNumber07 = (decimal)JobMtl["Number07"];

      Â
lNumber08 = (decimal)JobMtl["Number08"];

   }

   foreach (var
JobMtl_iterator in (from JobMtl_Row in Db.JobMtl

            Â
                       where
JobMtl_Row.JobNum == ipNewJobNum && JobMtl_Row.MtlSeq == CurrMtlSeq

                                   Â
select JobMtl_Row))

   {

      Â
JobMtl = JobMtl_iterator;

      Â
JobMtl.Number01 = lNumber01;

      Â
JobMtl.Number02 = lNumber02;

      Â
JobMtl.Number03 = lNumber03;

      Â
JobMtl.Number04 = lNumber04;

      Â
JobMtl.Number05 = lNumber05;

      Â
JobMtl.Number06 = lNumber06;

      Â
JobMtl.Number07 = lNumber07;

      Â
JobMtl.Number08 = lNumber08;

   }

}


</div>
 


<div style="color:#fff;min-height:0;"></div>


here is the original code Jose, Any assistance you can provide would be greatly appreciated!

DEFINE VARIABLE CurrMtlSeq AS INTEGER.
DEFINE VARIABLE lNumber01 AS DECIMAL.
DEFINE VARIABLE lNumber02 AS DECIMAL.
DEFINE VARIABLE lNumber03 AS DECIMAL.
DEFINE VARIABLE lNumber04 AS DECIMAL.
DEFINE VARIABLE lNumber05 AS DECIMAL.
DEFINE VARIABLE lNumber06 AS DECIMAL.
DEFINE VARIABLE lNumber07 AS DECIMAL.
DEFINE VARIABLE lNumber08 AS DECIMAL.
ASSIGN CurrMtlSeq = 0.
REPEAT:
FOR EACH JobMtl WHERE JobMtl.JobNum=ipJobNum and JobMtl.MtlSeq>CurrMtlSeq:
ACCUMULATE JobMtl.MtlSeq (MINIMUM).
END.
if (ACCUM MINIMUM JobMtl.MtlSeq)>=? then LEAVE.
ASSIGN CurrMtlSeq = (ACCUM MINIMUM JobMtl.MtlSeq).
FOR EACH JobMtl WHERE JobMtl.JobNum = ipJobNum and JobMtl.MtlSeq = CurrMtlSeq.
ASSIGN lNumber01 = JobMtl.Number01
lNumber02 = JobMtl.Number02
lNumber03 = JobMtl.Number03
lNumber04 = JobMtl.Number04
lNumber05 = JobMtl.Number05
lNumber06 = JobMtl.Number06
lNumber07 = JobMtl.Number07
lNumber08 = JobMtl.Number08.
END.
FOR EACH JobMtl WHERE JobMtl.JobNum = ipNewJobNum and JobMtl.MtlSeq = CurrMtlSeq.
Run Lib\UpdateTableBuffer.p(input BUFFER JobMtl:HANDLE, 'Number01', lNumber01).
Run Lib\UpdateTableBuffer.p(input BUFFER JobMtl:HANDLE, 'Number02', lNumber02).
Run Lib\UpdateTableBuffer.p(input BUFFER JobMtl:HANDLE, 'Number03', lNumber03).
Run Lib\UpdateTableBuffer.p(input BUFFER JobMtl:HANDLE, 'Number04', lNumber04).
Run Lib\UpdateTableBuffer.p(input BUFFER JobMtl:HANDLE, 'Number05', lNumber05).
Run Lib\UpdateTableBuffer.p(input BUFFER JobMtl:HANDLE, 'Number06', lNumber06).
Run Lib\UpdateTableBuffer.p(input BUFFER JobMtl:HANDLE, 'Number07', lNumber07).
Run Lib\UpdateTableBuffer.p(input BUFFER JobMtl:HANDLE, 'Number08', lNumber08).
End.
END.

This should do it Larry
using (var txScope = IceDataContext.CreateDefaultTransactionScope())
      {
        (from jm in Db.JobMtl.With(LockHint.NoLock)
         where jm.Company == callContextClient.CurrentCompany && jm.JobNum == ipJobNum
         select jm).ToList().ForEach(j =>
          {
            var newJM = (from jm in Db.JobMtl.With(LockHint.UpdLock) where jm.Company == callContextClient.CurrentCompany && jm.JobNum == ipNewJobNum && jm.MtlSeq == j.MtlSeq select jm).FirstOrDefault();
            if(newJM!=null)
            {
              newJM.Number01 = j.Number01;
              newJM.Number02 = j.Number02;
              newJM.Number03 = j.Number03;
              newJM.Number04 = j.Number04;
              newJM.Number05 = j.Number05;
              newJM.Number06 = j.Number06;
              newJM.Number07 = j.Number07;
              Db.Validate();
            }
          });
        txScope.Complete();
      }


Jose C Gomez
Software Engineer


T: 904.469.1524 mobile

Quis custodiet ipsos custodes?

On Thu, Dec 31, 2015 at 7:37 AM, larry.jedik@... [vantage] <vantage@yahoogroups.com> wrote:

Â
<div>
  
  
  <p></p><div><br></div><div>here is the original code Jose, Any assistance you can provide would be greatly appreciated!</div><div><br></div><div><div>DEFINE VARIABLE CurrMtlSeq AS INTEGER.</div><div>DEFINE VARIABLE lNumber01 AS DECIMAL.</div><div>DEFINE VARIABLE lNumber02 AS DECIMAL.</div><div>DEFINE VARIABLE lNumber03 AS DECIMAL.</div><div>DEFINE VARIABLE lNumber04 AS DECIMAL.</div><div>DEFINE VARIABLE lNumber05 AS DECIMAL.</div><div>DEFINE VARIABLE lNumber06 AS DECIMAL.</div><div>DEFINE VARIABLE lNumber07 AS DECIMAL.</div><div>DEFINE VARIABLE lNumber08 AS DECIMAL.</div><div>ASSIGN CurrMtlSeq = 0.</div><div>REPEAT:</div><div><span style="white-space:pre-wrap;">	</span>FOR EACH JobMtl WHERE JobMtl.JobNum=ipJobNum and JobMtl.MtlSeq&gt;CurrMtlSeq:</div><div><span style="white-space:pre-wrap;">		</span>ACCUMULATE JobMtl.MtlSeq (MINIMUM).</div><div><span style="white-space:pre-wrap;">	</span>END.</div><div><span style="white-space:pre-wrap;">	</span>if (ACCUM MINIMUM JobMtl.MtlSeq)&gt;=? then LEAVE.</div><div><span style="white-space:pre-wrap;">	</span>ASSIGN CurrMtlSeq = (ACCUM MINIMUM JobMtl.MtlSeq).</div><div><span style="white-space:pre-wrap;">	</span>FOR EACH JobMtl WHERE JobMtl.JobNum = ipJobNum and JobMtl.MtlSeq = CurrMtlSeq.</div><div><span style="white-space:pre-wrap;">		</span>ASSIGN lNumber01 = JobMtl.Number01</div><div><span style="white-space:pre-wrap;">					</span> lNumber02 = JobMtl.Number02</div><div><span style="white-space:pre-wrap;">					</span> lNumber03 = JobMtl.Number03</div><div><span style="white-space:pre-wrap;">					</span> lNumber04 = JobMtl.Number04</div><div><span style="white-space:pre-wrap;">					</span> lNumber05 = JobMtl.Number05</div><div><span style="white-space:pre-wrap;">					</span> lNumber06 = JobMtl.Number06</div><div><span style="white-space:pre-wrap;">					</span> lNumber07 = JobMtl.Number07</div><div><span style="white-space:pre-wrap;">					</span> lNumber08 = JobMtl.Number08.</div><div><span style="white-space:pre-wrap;">	</span>END.</div><div><span style="white-space:pre-wrap;">	</span>FOR EACH JobMtl WHERE JobMtl.JobNum = ipNewJobNum and JobMtl.MtlSeq = CurrMtlSeq.</div><div><span style="white-space:pre-wrap;">		</span>Run Lib&#92;UpdateTableBuffer.p(input BUFFER JobMtl:HANDLE, &#39;Number01&#39;, lNumber01).</div><div><span style="white-space:pre-wrap;">		</span>Run Lib&#92;UpdateTableBuffer.p(input BUFFER JobMtl:HANDLE, &#39;Number02&#39;, lNumber02).</div><div><span style="white-space:pre-wrap;">		</span>Run Lib&#92;UpdateTableBuffer.p(input BUFFER JobMtl:HANDLE, &#39;Number03&#39;, lNumber03).</div><div><span style="white-space:pre-wrap;">		</span>Run Lib&#92;UpdateTableBuffer.p(input BUFFER JobMtl:HANDLE, &#39;Number04&#39;, lNumber04).</div><div><span style="white-space:pre-wrap;">		</span>Run Lib&#92;UpdateTableBuffer.p(input BUFFER JobMtl:HANDLE, &#39;Number05&#39;, lNumber05).</div><div><span style="white-space:pre-wrap;">		</span>Run Lib&#92;UpdateTableBuffer.p(input BUFFER JobMtl:HANDLE, &#39;Number06&#39;, lNumber06).</div><div><span style="white-space:pre-wrap;">		</span>Run Lib&#92;UpdateTableBuffer.p(input BUFFER JobMtl:HANDLE, &#39;Number07&#39;, lNumber07).</div><div><span style="white-space:pre-wrap;">		</span>Run Lib&#92;UpdateTableBuffer.p(input BUFFER JobMtl:HANDLE, &#39;Number08&#39;, lNumber08).</div><div><span style="white-space:pre-wrap;">	</span>End.</div><div>END.</div></div><div><br></div><p></p>

</div><span class="ygrps-yiv-604129153">
 


<div style="color:#fff;min-height:0;"></div>